python 2.4 execv在AIX 5.1上挂起进程

时间:2012-01-05 16:23:29

标签: python fork aix execv

我正在尝试在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")

问题是这段代码挂起,它只打印“在主”,它只是在那里锁定。但是,如果我用“time.sleep(1)”取消注释,它执行正常,它会分叉,一切正常,它会打印“在主要”,然后在“父进程”中打印它应该做什么。

据我所知,execv会覆盖正在执行的进程的图像并且它不会返回,但我无法理解为什么这段代码会挂在我的机器上。请注意,此代码适用于python 1.5,为什么它不在2.4上。

有人可以帮忙吗?是execv执行速度快,它也弄乱了父图像(我知道这听起来很愚蠢似乎它正在做那个,或者至少类似于这个)?

谢谢,Mircea

0 个答案:

没有答案