Linux信号量,在forked> exec'd进程中共享?

时间:2013-04-01 17:13:48

标签: c++ linux synchronization ipc semaphore

假设我有一个父母要求孩子。然后分叉的孩子使用exec()来改变它的过程图像。现在,子和父都使用管道进行活动数据交换。我想使用信号量同步这个数据交换。根据我的理解,我将在fork之前在父级中创建信号量。然而,在exec()之后,孩子能够访问这个信号量吗? 如果没有,是否还有其他方法可以使用信号量来建立同步?

1 个答案:

答案 0 :(得分:1)

来自exec man page
[SEM] Any named semaphores open in the calling process shall be closed as if by appropriate calls to sem_close().
所以在调用exec之后,你无法在父母那里找到任何开放的密码。

当然,您根本不必担心,如果您希望两个进程共享信号量,只需使用posix named semaphores

这个想法很简单,你在一个进程中创建一个信号量并给它一个名字;另一个进程只需要有名称然后就可以打开那个信号量。