由扭曲的spawnProcess产生的kill子进程不起作用

时间:2012-11-27 14:56:51

标签: python process twisted

所有

我使用spawnProcess启动一个进程,并希望在我的某个Factory停止时终止。

我写的东西


p = SomeProtocol(ProcessProtocol)

reactor.spawnProcess(p, 'twistd', ['twistd', '-y', 'anotherMain.py'], {})

class Factory(ServerFactory):
...

    def StopFactory(self):
        # which is the p above
        p.transport.signalProcess("KILL")

我认为子进程将被终止,而不是。

我尝试过使用p.transport.signalProcess(“KILL”)其他地方,但它确实有效。

我的代码出了什么问题?谢谢!

1 个答案:

答案 0 :(得分:1)

这可能是因为twistd守护进程anotherMain.pyanotherMain.py成为守护程序twistd进程后退出。所以anotherMain.py实际上并不是主要流程的子流程。

尝试添加-n选项:

reactor.spawnProcess(p, 'twistd', ['twistd', '-ny', 'anotherMain.py'], {})