Windows上的进程之间是否存在异步通信方式?

时间:2013-01-06 16:54:14

标签: python windows signals subprocess

一开始,我必须再次指出我正在寻找的解决方案,必须在Windows上工作,对不起。 我想要实现的是异步地在进程之间进行通信。好吧,我的问题要复杂得多,但我会解释它的本质。 我有两个python文件:

test.py
import subprocess
import signal
import time

sent_signal = signal.SIGTERM

if __name__ == "__main__": 

    process = subprocess.Popen( "python sub_test.py" )
    time.sleep( 2 )
    process.send_signal( sent_signal )

sub_test.py
import signal

received_signal = signal.SIGTERM
event = False

def signal_handler( signum, frame ):
    event = True

if __name__ == "__main__":

    signal.signal( signal.SIGTERM, signal_handler )

    while True:
        if event:
            print "Event"
            event = False
        else:
            print "Working..."

正如python文档所说 sent_signal 只能是SIGTERMCTRL_C_EVENTCTRL_BREAK_EVENT,当 received_signal 时(信号)我可以定义处理程序)可以是:SIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERM。因此,乍一看SIGTERM是我可以在进程之间进行通信的信号,但是在Windows上发送SIGTERM不是发送信号,而是调用terminate()函数。所以我看到没有办法使用信号进行通信。在这一点上,我没有想法,我如何解决我的问题。 使用Popen.communicate()的同步方式不是一个选项,因为我需要实时打印输出。

所以我的问题是:Windows上的进程之间是否存在异步通信方式?

0 个答案:

没有答案