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
| int pid = fork(); if (pid<0) { cout << "fork failed"; } if (pid==0) { sem_t* sem=sem_open("test", O_CREAT, 0666, 1); int rs = sem_wait(sem); if (rs<0) { cout << "wait failed"; exit(-1); } else { cout << "success 1" << endl; sleep(3); sem_post(sem); sem_close(sem); } } else { sem_t* sem=sem_open("test", O_CREAT, 0666, 1); int rs=sem_wait(sem); if (rs<0) { cout << "wait failed"; exit(-1); } else { cout << "success 2" << endl; sleep(3); sem_post(sem); sem_close(sem); } int tmp; wait(&tmp); }
|