zoukankan      html  css  js  c++  java
  • 进程间传递文件描述符fd

    众所周知,子进程会继承父进程已经打开的文件描述符fd,但是fork之后的是不会被继承的,这个时候是否无能无力了?答应是NOLinux提供了一个系统调用sendmsg,借助它,可以实现进程间传递文件描述符fd,而且不仅限于父进程到子进程。sendmsg函数的原型如下:

    #include <sys/socket.h>

    ssize_t sendmsg(int socket, const struct msghdr *message, int flags);

    ssize_t recvmsg(int socket, struct msghdr *message, int flags);

    recvmsg函数用来接收fd这里的socket必须为UnixSocketAF_UNIX),在Linux上执行man 7 unix,并搜索SCM_RIGHTS,即看到有关说明:Send or receive a set of open file descriptors from another process

    通过sendmsg发送的fd,并不是将fd值传递给目标进程,而是活生生地在目标进程空间里复制指向同一个file结构体的fd,所以不要期望在两个进程中,fd值相同。

    具体的使用示例,请baidugoogle关键词:sendmsg fd,即可找到,这里就不多说了。


  • 相关阅读:
    [LUOGU] NOIP提高组模拟赛Day1
    关于NX Check_Mate功能外部开发心得
    hibernate增删改
    eval转json
    day24(JAVAWEB上传与下载)
    struts2执行流程
    oracle之简单总结
    设计模式之装饰者模式
    第五周学习总结
    第四周学习总结
  • 原文地址:https://www.cnblogs.com/aquester/p/9891633.html
Copyright © 2011-2022 走看看