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()、などの関数の1つを使用しos.waitpid()ます。この方法は信頼できます。ボーナスとして、それはあなたにステータス情報を与えるでしょう。

于 2012-05-21T11:20:09.267 に答える
10

os.fork()and (例については以下を参照)を使用できますが、サブプロセスモジュールos.wait()のメソッドを使用する方がおそらく良いでしょう。

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 に答える