Python2.4execv挂起AIX5.1上的进程

Python2.4execv挂起AIX5.1上的进程,python,fork,aix,execv,Python,Fork,Aix,Execv,我试图在AIX5.1上使用Python2.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() p

我试图在AIX5.1上使用Python2.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")
问题是,这段代码挂起,它只打印“在main中”,它只是停留在那里锁定。但是,如果我用“time.sleep(1)”取消注释该行,它执行得很好,会分叉,一切正常,它会打印“在main中”,然后打印“在父进程中”它应该做什么

据我所知,execv会覆盖正在执行的进程的映像,并且不会返回,但我无法理解为什么这段代码挂在我的机器上。请注意,这段代码在Python1.5上运行良好,我不明白为什么它在2.4上不能运行

有人能帮忙吗?execv是否执行得太快,同时也会弄乱父映像(我知道这听起来很愚蠢,因为它似乎正在这样做,或者至少与此类似)


谢谢,Mircea

当你使用
os.fork
(因为你实际上没有使用PTY)时,它的行为是否相同?你能在其他操作系统上测试这个吗?您确定它是特定于AIX的吗?祝你好运。我已经在RH环境中使用相同的python版本测试了它,它的表现很好,没有任何挂起。我只能在AIX机器上重新编程。。。非常奇怪,
os.fork
似乎工作正常。