【发布时间】:2017-11-18 07:54:32
【问题描述】:
这个程序可以工作(我测试过),即使信号量不在共享内存中。请注意我是如何在 fork() 之前创建一次变量的。
另一方面,使用sem_init() 创建的信号量需要在共享内存中才能工作。但它仍然是一个sem_t 结构,那为什么它不需要共享内存呢?
sem_t 结构的内容是否有所不同?
sem_t *s = sem_open("mysemaphore1", O_CREAT, 0600, 0);
if (fork()) {
sleep(3);
sem_post(s);
} else {
sem_wait(s);
printf("Woke\n");
}
【问题讨论】: