1

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 は高速で実行されており、親イメージも台無しになっています (それがまさにそれを行っているように見えるか、少なくともこれに似た何かをしているように見えるので、この音はばかげていることを知っています)?

ありがとう、ミルチャ

4

0 に答える 0