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