#include #include #include #include #include #include void *sleepclose(void *dummy) { printf("thread: sleeping\n"); usleep(500000L); printf("thread: closing fd\n"); printf("thread: close() returns %d\n", close(0)); printf("thread: exiting\n"); return NULL; } int main(int argc, char *argv[]) { char buf[512]; int res; pthread_t th; printf("parent: create thread\n"); pthread_create(&th, NULL, sleepclose, NULL); printf("parent: read from stdin\n"); res = read(0, buf, sizeof(buf)); printf("parent: read returns %d (err: %s/%d)\n", res, strerror(errno), errno); return 0; }