如何让Python的子进程模块接受fd
而不是路径(=execveat()with AT_EMPTY_PATH
)?
示例:
subprocess.Popen (["argv0", "argv1"], shell=False,
executable=os.open ("/proc/self/exe",
os.O_RDONLY
| os.O_CLOEXEC))
在python3.6.5中,由于TypeError,这会失败。你知道吗
当然,我们的目标是避免在验证之间出现冲突 二进制和对execve(2)的调用。你知道吗
我知道操作系统执行()也可以和fds一起使用,但是 最好不要在上面重新实现子流程模块。你知道吗
CPython的^{} ,POSIX的^{} 的内部实现,既不支持
fexecve(3)
,也不支持execveat(2)
。如果可以假设/proc
已装入,那么只需指定/proc/self/fd/N
(其中N是所需的fd)作为可执行文件。这也是fexecve(3)
在旧内核上的作用。有关/proc/self/fd
的详细信息,请参见Linux手册页proc(5)
。你知道吗编辑示例:
相关问题 更多 >
编程相关推荐