Я создаю процесс P, а процесс P имеет дочерний элемент C. Оба процесса создают по одному потоку каждый.И я хочу синхронизировать оба потока, используя семафор.Проблема в том, что sem_post из дочернего потока процесса не вызывает sem_wait родительского потока процесса.
sem_t sem;
void* th(void* arg){
sem_wait(&sem);
printf("DONE");
}
void* th1(void* arg){
printf("%d",sem_post(&sem));
}
pthread_t id[2];
int main(){
sem_init(&sem,2,1);
sem_wait(&sem);
pid_t id1 = fork();
if(id1==0){
pthread_create(&id[0],NULL,th,NULL);
pthread_join(id[0],NULL);
}
else if(id1>0){
pthread_create(&id[1],NULL,th1,NULL);
pthread_join(id[1],NULL);
wait(NULL);
}
}