#include #include sem_t s; main(int argc, char *argv[]) { if( sem_init(&s, 0, 1) < 0 ){ perror("semaphore init fails"); exit(1); } if( (fork()) == 0 ){ fprintf(stderr, "child waiting...\n"); sem_wait(&s); fprintf(stderr, "child sleeping...\n"); sleep(3); fprintf(stderr, "child stop...\n"); sem_post(&s); } else { fprintf(stderr, "parent waiting...\n"); sem_wait(&s); fprintf(stderr, "parent sleeping...\n"); sleep(3); fprintf(stderr, "parent stop...\n"); sem_post(&s); } }