python子进程popen立即启动

标签 python linux process

我的目标是能够在单独的进程中启动 shell 脚本并通过 linux ptrace 系统调用检查它。 问题是我需要在它开始之前获取进程 PID。像 subprocess.Popen(['ls', '-l']) 或 python-sh 之类的东西会立即运行命令,所以有一次我试图通过它的 PID 检查这个进程,它很可能已经完成了。 另一方面,我不能使用 os.fork + exec,因为我开始的 bash 命令会覆盖 python 代码。

最佳答案

如果您使用的是 Unix,我认为您可以在 Popen 构造函数中使用 preexec_fn 参数。

根据子流程的文档:

If preexec_fn is set to a callable object, this object will be called in the child process just before the child is executed. (Unix only)

因为它在子进程中运行,您可以使用os.getpid() 来获取子进程。

关于python子进程popen立即启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710900/

相关文章:

linux - 了解来自 Linux 服务器的 HTTP 响应

c - 编译共享库时 -fPIC 是什么意思

linux - 目录名前缀有两个点是什么意思?

c++ - 以编程方式从父级的子进程中捕获打印,这样它们就不会转到标准输出

c - 为什么这个函数会产生这么多子进程?

python - 修改for循环中的增量值

python - Sublime Text 插件 - 如何查找选择中的所有区域

python - 如何在 Python 中以相同比例在同一图形上绘制两个 3D 矩阵图

Python split 无法识别连字符

macos - 从 macOS 上的打开命令启动的应用程序进程获取 pid