我正在使用
p = Popen(["sudo", "./a.out"])
其中a.out
是一个C可执行文件,它连续运行,直到向它发送SIGINT或Ctrl+C信号为止。我在使用subprocess.Popen
对象函数(如send_signal()
)时遇到了问题,因为Operation not permitted
错误是由于可执行文件的sudo
性质引起的。在此之后,我尝试通过以下方式向子流程发送SIGINT:
os.system(f"sudo kill -2 {p.pid}")
但这似乎并没有正确地针对流程。运行快速sudo netstat -lpnt
检查显示a.out
进程仍在一个pid上运行,该pid与p.pid
返回的pid不同(通常是几个整数,即p.pid
返回3031,但a.out
是3035)。有什么我误解的吗
实际上,您正在获得并终止sudo进程(它分叉了您的应用程序进程)。相反,您应该使用以下方法终止整个流程组:
或者在pkill的帮助下:
相关问题 更多 >
编程相关推荐