1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
   | /* j'utilise du C++ */
#include <stdio.h>
#include <boost/thread.hpp>
 
extern void fonction(FILE*);
 
/* normalement déclarée dans stdio.h mais absente*/
extern FILE* fmemopen(void*, size_t, const char*);
 
int main(int argc, char** argv)
{
    char* buf = malloc(512);
    FILE* iobuf = fmemopen(buf, 512, "w");
    FILE* iobuf2= fmemopen(buf, 512, "r");
    int index = 0;
 
    /* lancement du thread (C++) */
    boost::thread t (boost::bind(&fonction, iobuf2));
 
    for(index = 1; index < argc; ++index)
    {
        fprintf(iobuf, "%s", argv[index]);
        fflush(iobuf);
    }
 
    /* signal d'arret */
    fprintf(iobuf, "stop !!!");
 
    /* attente de la fin du thread (C++) */
    t.join();
 
    fclose(iobuf);
    fclose(iobuf2);
 
    return EXIT_SUCCESS;
} | 
Partager