我的主进程/线程启动一个可执行文件,它在回显Algorithm loaded
之后开始等待信号。我正在使用subprocess.Popen
类来运行可执行文件。
稍后,启动一个线程,该线程应该向先前启动的可执行文件发送信号。但我不知道如何从该线程向特定的子进程发送信号。
是否可以使用PID
传递PID
和“recover”子进程?重用该进程的目的是发送相当于stdin
的内容。在
以下是我启动可执行文件的代码:
def start_module():
cmd = '%s/libraries/OpenBR' % settings.MODULES_DIR
process = subprocess.Popen(cmd,stdout=subprocess.PIPE)
while True:
line = process.stdout.readline()
if line.find('Algorithm loaded') > -1:
break
return 0
代码中的
process
变量引用一个Popen
对象,该对象支持pid
属性。如果您让您的start_module
函数返回进程,您可以稍后使用os.kill
向它发送一个信号。例如:据我所知,使用线程或不发送信号应该没有任何区别。请注意,
os.kill
并不一定要杀死一个进程:它向它发送一个信号,然后该进程可以适当地处理它(这里是ALARM
信号)。在如果您的目的是将一些输入传递给进程的
^{pr2}$stdin
,那么事情也很简单。您只需将stdin=subprocess.PIPE
添加到Popen
调用并打印到新进程的stdin
属性:相关问题 更多 >
编程相关推荐