进程间传递文件描述符fd

进程传递⽂件描述符fd
众所周知,⼦进程会继承⽗进程已经打开的⽂件描述符fd,但是fork之后的是不会被继承的,这个时候是否⽆能⽆⼒了?答应
是NO。Linux提供了⼀个系统调⽤sendmsg,借助它,可以实现进程间传递⽂件描述符fd,⽽且不仅限于⽗进程到⼦进程。sendmsg函数的原型如下:
scm文件
#include <sys/socket.h>
ssize_t send msg(int socket, const struct msghdr *message, int flags);
ssize_t recv msg(int socket, struct msghdr *message, int flags);
recv msg函数⽤来接收fd,这⾥的socket必须为UnixSocket(AF_UNIX),在Linux上执⾏man 7 unix,并搜索SCM_RIGHTS,即看到有关说明:Send or receive a set of open file descriptors from another process。
通过send msg发送的fd,并不是将fd值传递给⽬标进程,⽽是活⽣⽣地在⽬标进程空间⾥复制指向同⼀个file结构体的fd,所以不要期望在两个进程中,fd值相同。
具体的使⽤⽰例,请baidu或google关键词:sendmsg fd,即可到,这⾥就不多说了。

本文发布于:2024-09-21 01:25:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/381779.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进程   继承   传递   函数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议