如何在使用匿名posix信号量的进程中实现 生产者/ consmer问题? (这意味着我需要有2个进程,其打印反过来一些文本,第二个可以从1日开始分叉)使用posix无名信号量的IPC
pthread_t pchild;
int i = 0;
pid_t pid;
sem_init(&fst, 1, 1);
sem_init(&scnd, 1, 0);
if((pid = fork()) == 0){
while(i<10){
sem_wait(&scnd);
printf("CHILD\n");
sem_post(&fst);
i++;
}
}else if(pid != -1){
while(i<10){
sem_wait(&fst);
printf("parent\n");
sem_post(&scnd);
i++;
}
}else{ printf("error - fork !!!\n");}
sem_destroy(&fst);
sem_destroy(&scnd);
这个代码打印只是 “父” - 1点时, 但我发现“未命名信号或者私有,通过fork()继承“在oracle文档中http://docs.oracle.com/cd/E19253-01/816-5137/sync-39/index.html 有什么问题?
我的解决办法是在这里https://www.dropbox.com/s/zzgsyj9rq1ngv0s/ost_13p.c
你能更具体一点吗?不清楚你在问什么。 – Rhs
2过程:第二个从第一个分叉开始,他们都应该交替打印一些东西。任务是使用未命名的posix信号量。据我所知,共享内存是这种情况下的解决方案,但我不知道如何。 –