Попробуйте выполнить код ниже: python fork.py
и с: python fork.py 1
, чтобы увидеть, что он делает.Python fork-exec проблема, выход дочернего процесса идет в том же месте, что и родительский процесс.
#!/usr/bin/env python2
import os
import sys
child_exit_status = 0
if len(sys.argv) > 1:
child_exit_status = int(sys.argv[1])
pid = os.fork()
if pid == 0:
print "This is the child"
if child_exit_status == 0:
os.execl('/usr/bin/whoami')
else:
os._exit(child_exit_status)
else:
print "This is the parent"
(child_pid, child_status) = os.wait()
print "Our child %s exited with status %s" % (child_pid, child_status)
Вопрос: Как процесс дочернего процесса может выполнять «печать», и он все равно выводится на то же место, что и родительский процесс?
(Am, используя Python 2.6 на Ubuntu 10.04)
Потому что это правило? Шутки в сторону. Причина в том, что так работает Linux. Каков ваш реальный вопрос? Как это изменить? –