[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]


I downloaded this program from the net, compiled it and ran. It works as

it is supposed to. But the problem is, redirection of its output is not
happening.  The reason I think is 'pthread_exit'. In the program both
main thread and the thread created is stopped using 'pthread_exit'.
And, it looks like 'pthread_exit' is not doing a 'fflush'.  Why is this?

If I call 'fflush'  before 'pthread_exit'  everything works fine.

Have a look at the code....

-- pthread_create.c --
#include <stdio.h>       /* standard I/O routines                 */
#include <pthread.h>     /* pthread functions and data structures */

/* function to be executed by the new thread */
do_loop(void* data)
    int i;   /* counter, to print numbers */
    int j;   /* counter, for delay        */
    int me = *((int*)data);     /* thread identifying number */

    for (i=0; i<10; i++) {
        for (j=0; j<500000; j++) /* delay loop */
        printf("'%d' - Got '%d'\n", me, i);

    /* exit the thread */

/* like any C program, program's execution begins in main */
main(int argc, char* argv[])
    int        thr_id;         /* thread ID for the newly created thread
    pthread_t  p_thread;       /* thread's structure
    int        a         = 1;  /* thread 1 identifying number
    int        b         = 2;  /* thread 2 identifying number

    /* create a new thread that will execute 'do_loop()' */
    thr_id = pthread_create(&p_thread, NULL, do_loop, (void*)&a);
    /* run 'do_loop()' in the main thread as well */

    /* NOT REACHED */
    return 0;

-- pthread_create.c --

Thanks in advance.