什么是recvmsg等效的python?

时间:2011-06-11 08:40:53

标签: python sockets fuse

我正在实现一个python脚本以编程方式进行熔丝安装。我用C语言编写了一个等价物,使用了socketpair和recvmsg api。但是在python recvmsg没有实现,所以我被卡住了。谁能告诉我一个python相当于此?任何帮助将不胜感激。

让我告诉我为什么需要recvmsg,我需要将保险丝座的fd从孩子发送给父母。

2 个答案:

答案 0 :(得分:1)

你可以看到的是使用Python的pyx或C模块来实现C中所需的功能,然后你可以从Python脚本中操作或使用它。这将允许您通过文件描述符发送并让Python脚本对其进行操作。

你可以做的其他事情是编写一个小的C包装器,它处理recvmsg,直到它获得fd并打开它才能执行fork。所有打开的文件描述符在fork时都会保持打开状态,然后exec甚至只是普通的exec,这意味着你不必担心Python会接收它。

答案 1 :(得分:1)

作为Python3 socket.recvmsg的一部分现在可以在socket模块中使用,根据文档,它应该允许你做你想做的事情(虽然相当晚!):

  

在某些系统上,sendmsg()和recvmsg()可用于传递文件   AF_UNIX套接字上的进程之间的描述符。当这个   使用工具(它通常仅限于SOCK_STREAM套接字),   recvmsg()将在其辅助数据中返回表单的项目   (socket.SOL_SOCKET,socket.SCM_RIGHTS,fds),其中fds是一个字节   将新文件描述符表示为二进制数组的对象   native C int类型。如果recvmsg()在系统之后引发异常   调用返回,它将首先尝试关闭任何文件描述符   通过这种机制收到。