11

只是想知道是否有人可以帮助我。我遇到的问题是我 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() 可能不是正确的使用方法。

谢谢。

4

2 回答 2

16

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

于 2012-05-21T11:20:09.267 回答
10

虽然您可以使用os.fork()and 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)
于 2012-05-21T11:37:13.640 回答