0

假设我有一个分叉孩子的父母。分叉的孩子然后使用 exec() 来更改它的进程映像。孩子和父母现在都在使用管道进行主动数据交换。我想使用信号量同步这个数据交换。据我了解,我将在分叉之前在父级中创建信号量。但是,在 exec() 之后,孩子可以访问这个信号量吗?如果没有,还有其他方法可以使用信号量来建立同步吗?

4

1 回答 1

1

exec 手册页
[SEM] Any named semaphores open in the calling process shall be closed as if by appropriate calls to sem_close().
所以在调用 exec 之后,您无法到达父级中的任何打开的信号量。

当然,您根本不必担心这一点,如果您希望两个进程共享一个信号量,只需使用名为 semaphores 的 posix即可。

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

于 2013-04-01T18:14:48.917 回答