python2.6.6:如何将os.fork()子进程打印的输出重定向到日志文件?

时间:2019-01-30 09:12:43

标签: unix python-2.6

下面的模型程序仅打印其父PID的打印输出到“ 1.log”文件。为什么不打印子PID的打印输出到1.log。

在谷歌搜索时找不到答案。

from __future__ import print_function 
import sys
import os


def main():

    class Logger(object):
        def __init__(self):
            self.log = open("1.log", "w")

        def write(self, message):
            self.log.write(message)  

    sys.stdout = Logger()

    def test():
        cmd = 'ver'
        print("1. Running command:",cmd)
        print('2. Done')                    

    pid = os.fork()

    if pid != 0 :
        child1 = pid
        print("This is parent")
        test()

    else:
        print("This is Child")
        test()
        os._exit(0)


    os.waitpid(child1, 0)

if __name__ == "__main__":
    main()

运行上述程序后,

我期望这样的输出:

预期的1.log文件内容:

这是父母 1.运行命令:ver 2.完成 这是孩子 1.运行命令:ver 2.完成

但实际输出是

1.log包含:

这是父母 1.运行命令:ver 3.完成

有人可以告诉我要获取上述1.log文件内容需要做什么(如预期的1.log文件内容所述)?

0 个答案:

没有答案