fork、exec 和 exit 对 IPC 对象的影响

举报
debugzhang 发表于 2021/03/17 12:09:56 2021/03/17
【摘要】 fork、exec 和 _exit 函数对于所讨论的各种形式的 IPC 的影响(_exit 是由 exit 调用的一个函数)

GitHub: https://github.com/storagezhang

Emai: debugzhang@163.com

本文摘自《UNIX 网络编程 卷2:进程间通信》 1.5 节


fork、exec 和 _exit 函数对于所讨论的各种形式的 IPC 的影响(_exit 是由 exit 调用的一个函数):

IPC 类型 fork exec _exit
管道和 FIFO 子进程取得父进程的所有打开着的描述符的副本 所有打开着的描述符继续打开着,除非已设置描述符的 FD_CLOEXEC 关闭所有打开着的描述符,最后一个关闭时删除管道或 FIFO 中残留的所有数据
Posix 消息队列 子进程取得父进程的所有打开着的消息队列描述符的副本 关闭所有打开着的消息队列描述符 关闭所有打开着的消息队列描述符
System V 消息队列 没有效果 没有效果 没有效果
Posix 互斥锁和条件变量 若驻留在共享内存区中而且具有进程间共享属性,则共享 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失
Posix 读写锁 若驻留在共享内存区中而且具有进程间共享属性,则共享 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失
Posix 有名信号量 若驻留在共享内存区中而且具有进程间共享属性,则共享 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失 除非在继续打开着的共享内存区中而且具有进程间共享属性,否则消失
System V 信号量 子进程中所有 semadj 值都置为 0 所有 semadj 值都携入新程序中 所有 semadj 值都加到相应的信号量值上
fcntl 记录上锁 子进程不继承由父进程持有的锁 只要描述符继续打开着,锁就不变 解开由进程持有的所有未处理的锁
mmap 内存映射 父进程中的内存映射存留到子进程中 去除内存映射 去除内存映射
Posix 共享内存区 父进程中的内存映射存留到子进程中 去除内存映射 去除内存映射
System V 共享内存 附接着的共享内存区在子进程中继续附接着 断开所有附接着的共享内存区 断开所有附接着的共享内存区
子进程取得父进程的所有打开着的描述符,但是客户在门描述符上激活其过程时,只有父进程是服务器 所有门描述符都应关闭,因为它们创建时设置了 FD_CLOEXEC 关闭所有打开着的描述符
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。