Python检查fork()进程是否完成

时间:2012-05-21 11:16:45

标签: python fork

只是想知道是否有人可以帮助我。我遇到的问题是我os.fork()获取几个信息并将它们发送到一个文件,但检查fork进程是否工作。

import sys
import time
import os
import re


ADDRESS  = argv[1]
sendBytes = argv[2]


proID2 = os.fork()
if proID2 == 0:
    os.system('ping -c 20 ' + ADDRESS + ' > testStuff2.txt')
    os._exit(0)

print proID2

finn = True
while finn == True:
time.sleep(1)
finn = os.path.exists("/proc/" + str(proID2))
print os.path.exists("/proc/" + str(proID2))
print 'eeup out of it ' + str(proID2)

我认为os.path.exists()可能不适合使用。

感谢。

2 个答案:

答案 0 :(得分:13)

要等待子进程终止,请使用os.waitXXX()函数之一,例如os.waitpid()。这种方法可靠;作为奖励,它会为您提供状态信息。

答案 1 :(得分:9)

虽然您可以使用os.fork()os.wait()(请参阅下面的示例),但您最好使用subprocess模块中的方法。

import os, sys

child_pid = os.fork()
if child_pid == 0:
    # child process
    os.system('ping -c 20 www.google.com >/tmp/ping.out')
    sys.exit(0)

print "In the parent, child pid is %d" % child_pid
#pid, status = os.wait()
pid, status = os.waitpid(child_pid, 0)
print "wait returned, pid = %d, status = %d" % (pid, status)