AIX 5.1 で python 2.4 を使用してプロセスをフォークしようとしています。次のコードを使用しています。
def runcmd(cmd):
(pid, fd) = pty.fork()
argv = cmd.split()
if not pid:
print "In child process"
#time.sleep(1)
os.execv(argv[0],argv)
sys.exit()
print "In parent process"
if __name__ == "__main__":
print "In main"
runcmd("/bin/sh cmd1 -l")
問題は、このコードがハングし、「In main」のみを出力し、そこにロックされたままになることです。ただし、「time.sleep(1)」の行のコメントを外すと、正常に実行され、フォークし、すべてが問題なく、「メインで」、次に「親プロセスで」と出力されます。
私の知る限り、 execv は実行中のプロセスのイメージを上書きし、 を返しませんが、このコードがマシンでハングする理由がわかりません。このコードは python 1.5 で正常に動作することに注意してください。2.4 で動作しない理由は私にはわかりません。
誰でも助けることができますか?execv は高速で実行されており、親イメージも台無しになっています (それがまさにそれを行っているように見えるか、少なくともこれに似た何かをしているように見えるので、この音はばかげていることを知っています)?
ありがとう、ミルチャ