python 2.4 execv зависает в AIX 5.1 - PullRequest
       23

python 2.4 execv зависает в AIX 5.1

1 голос
/ 05 января 2012

Я пытаюсь развить процесс, используя python 2.4 в AIX 5.1, я использую следующий код

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 на fast, и это портит также родительский образ (я знаю, это звучит глупо, потому что кажется, что он делает именно это, или, по крайней мере, что-то похожее на это)?

Спасибо, Мирча

...