python-twisted:用于后台非返回处理的fork

时间:2012-11-01 16:37:13

标签: python fork twisted

如何正确地将子进程分叉,不使用任何扭曲的子进程(但使用来自父进程的数据)(例如,处理父进程中某些数据的“快照”并将其写入文件,阻塞)?

似乎我在os.fork()之后执行了像子进程中的干净关闭这样的事情,它关闭了父进程中的一些套接字/描述符;避免我看到的唯一方法就是做os.kill(os.getpid(), signal.SIGKILL),这似乎是一个坏主意(尽管不是直接问题)。

(另外,如果在父进程中更改了dict,它是否也会在子进程中发生变化?快速测试表明它不会改变。但OS /内核是debian stable / sid)

1 个答案:

答案 0 :(得分:1)

IReactorProcess.spawnProcess(通常以from twisted.internet import reactor; reactor.spawnProcess提供)可以生成运行系统上任何可用可执行文件的进程。子进程不需要使用Twisted,甚至不需要使用Python。

请勿亲自致电os.fork。正如您所发现的,它与流程状态有很多非常特殊的交互,spawnProcess将为您管理。