Python asyncio和subprocess_exec():获取已退出进程的siginfo
因此,PythonPython asyncio和subprocess_exec():获取已退出进程的siginfo,python,unix,asynchronous,signals,python-asyncio,Python,Unix,Asynchronous,Signals,Python Asyncio,因此,Pythonasyncio模块提供了一种很好的方法,可以使用subprocess\u exec与活动进程的输入/输出流进行异步交互。通常,这是通过设置继承自asyncio.SubprocessProtocol的子类来完成的,并为以下内容编写方法: def connection_made(self, transport): ... def pipe_data_received(self, fd, data): ... def process_exited(self): ...
asyncio
模块提供了一种很好的方法,可以使用subprocess\u exec
与活动进程的输入/输出流进行异步交互。通常,这是通过设置继承自asyncio.SubprocessProtocol
的子类来完成的,并为以下内容编写方法:
def connection_made(self, transport):
...
def pipe_data_received(self, fd, data):
...
def process_exited(self):
...
最后一个方法,process\u exited
,在进程退出时被调用。在这里,您可以通过transport
对象的return\u code()
方法获取返回代码。但是,我希望能够获得有关异常退出的进程的更具体的信息。我希望能够通过UNIX/Linux/POSIX平台通过waitid()/waitpid()
函数系列提供的siginfo\u t
对象获得所提供的信息。siginfo\u t
结构提供了许多关于进程退出原因的有用信息,例如它是否被信号(分段故障/中止等)终止以及其他信息
我尝试在os
模块中使用Python包装器调用process\u exited
回调中的os.waitid(…)
,但它会引发ChildProcessError
异常,可能是因为在调用process\u exited
时,子进程已经退出,因此os.waitpid()
不起作用
那么,使用
asyncio.SubprocessProtocol
工作流是否可以从退出的子进程中检索siginfo\u t