Linux 信号量,跨分叉>exec'd 进程共享?
Linux semaphores, shared across forked->exec'd processes?
假设我有一个派生子节点的父节点。然后,分叉的子进程使用exec()来更改它的进程映像。子节点和父节点现在都在使用管道进行活动数据交换。我想用一个信号量来同步这个数据交换。据我所知,我将在fork之前在父进程中创建信号量。然而,exec()之后的子进程是否能够访问这个信号量?如果没有,是否有其他方法可以使用信号量来建立同步?
从exec手册页:[SEM] Any named semaphores open in the calling process shall be closed as if by appropriate calls to sem_close().
所以在调用exec之后,你无法到达父进程中的任何打开的信号量。
当然,你完全不用担心这个问题,如果你想让两个进程共享一个信号量,只要使用posix命名的信号量就可以了。
这个想法很简单,你在一个进程中创建一个信号量,并给它一个名字;另一个进程只需要有这个名字,然后它就可以打开这个信号量
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- Directx 12 :在两个进程之间共享图形内存
- 子进程更新共享 mmap 内存,但父进程没有更改
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 提升进程间共享内存open_or_create每次都会引发异常
- 提升进程间共享内存删除、权限和输出文件
- 加速进程间:管理共享内存错误
- 使用互斥锁和条件变量增强跨内存的进程间共享向量
- std::unordered_map 在共享内存中使用 boost:::进程间分配器 - 缺点?
- 如何将我的 cli 信息(变量等)共享到子进程,这是一个 bash shell 脚本
- 提升进程间:在循环中分配共享内存
- 动态链接库 (.dll) 中的对象是否跨进程共享
- SYSTEM进程是否可以与非SYSTEM进程共享数据
- POSIX 跨进程共享内存同步 C++/C++11
- 可以跨进程共享的C++容器
- 两个进程共享同一个pcap文件
- ZeroMQ与分叉服务器中的所有子进程共享上下文
- Linux 信号量,跨分叉>exec'd 进程共享?
- C++多进程共享内存实现
- 使用boost::interprocess::shared_ptr实现跨进程共享生命周期