Приведенная ниже модель программы печатает только выходные данные своего родительского PID в файл «1.log».почему он не печатает вывод дочернего PID в 1.log.
Я не смог найти ответ при поиске в Google.
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. содержимое файла журнала:
Это родитель 1. Выполняемая команда: ver 2. Выполнено Это дочерний 1. Запущенная команда: ver 2. Выполнено
, но фактический результат равен
1.log содержит:
Это родитель 1. Выполнение команды: ver 3. Готово
Может кто-нибудь сказать мне, что нужно сделать, чтобы получить содержимое файла 1.log, как указано выше(как указано в Expected 1.log file content:)?