Python fork exec问题,子进程输出与父进程位于同一位置
使用:Python fork exec问题,子进程输出与父进程位于同一位置,python,exec,fork,Python,Exec,Fork,使用:python fork.py和:python fork.py 1尝试下面的代码,查看它的功能 #!/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
python fork.py
和:python fork.py 1
尝试下面的代码,查看它的功能
#!/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)
问:为什么子进程可以进行“打印”,但它仍然被输出到与父进程相同的位置
(我在Ubuntu 10.04上使用Python 2.6)因为您没有更改子进程的文件描述符1标准输出的目标。因为您没有更改子进程的文件描述符1标准输出的目标。在linux下,子进程继承(几乎)父进程的所有内容,包括文件描述符。在您的情况下,文件描述符1(stdout)和文件描述符2(stderr)与父级打开到同一个文件 有关详细信息,请参阅手册页
如果希望子进程的输出转到其他地方,可以在子进程中打开一个新文件。在linux下,子进程(几乎)继承父进程的所有内容,包括文件描述符。在您的情况下,文件描述符1(stdout)和文件描述符2(stderr)与父级打开到同一个文件 有关详细信息,请参阅手册页
如果您希望子项的输出转到其他地方,可以在子项中打开一个新文件。因为这是规则?认真地原因是Linux就是这样工作的。你真正的问题是什么?如何改变这一点?因为这是规则?认真地原因是Linux就是这样工作的。你真正的问题是什么?如何改变这一点?谢谢,这非常有帮助!谢谢,这很有帮助!