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)”取消注释它执行得很好,它会分叉并且一切正常,它会打印“In main”,然后打印“In parent process”它应该做什么。

据我所知, execv 覆盖了正在执行的进程的图像并且它没有返回,但我不明白为什么这段代码会挂在我的机器上。请注意,此代码适用于 python 1.5 ,为什么它不能在 2.4 上运行超出了我的范围。

任何人都可以帮忙吗?execv 是否执行得很快并且它也弄乱了父图像(我知道这听起来很愚蠢,似乎它正在这样做,或者至少类似于这个)?

谢谢,米尔恰

4

0 回答 0