Как я могу сделать дочерний процесс, чтобы не выполнять родительский код в python с помощью `os.fork ()` - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу, чтобы дочерний процесс не выполнял оставшийся родительский код после его разветвления.

Я достигаю этого, явно выходя из дочернего процесса, проверяя идентификатор процесса, возвращаемый os.fork(), как в примере ниже:

def fork_and_exit(fork_target):
    print("Inside fork_and_exit()")
    new_fork_id = os.fork()    
    if(new_fork_id == 0):
        fork_target()
        sys.exit(0)   #this prevent child from executing code below
                      #after returning from fork_target()

    print("Exiting fork_and_exit()")
    sys.exit(0)

def dummy_fork_target():
    print("Dummy fork target!!!")

fork_and_exit(dummy_fork_target)

Вывод выше выглядит следующим образом:

Inside fork_and_exit()
Exiting fork_and_exit()
Dummy fork target!!!

Вопрос в том, если выше fork_and_exit() правильно построить? Я имею в виду, что это правильный способ, и люди делают это только таким образом, или я без необходимости заново изобретаю колесо, и есть другой хорошо известный / предпочтительный подход для достижения этого, который я упускаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...