У меня есть этот код для fork
дочерний процесс от родительского процесса и я знаю, что:как раскошелиться дочерний процесс от дочернего процесса соответственно
os.fork()
создает копию предыдущей сессии Python и открывает его параллельно , и os.fork()
возвращает идентификатор нового процесса.
Я хочу разбить дочерний процесс из дочернего процесса, но всегда он разветвляется из родительского процесса. Как это можно сделать.
import os
def child():
print('this is child', os.getpgid())
os._exit()
def parent():
while True:
newpid = os.fork()
if newpid ==0:
child()
else:
pids = (os.getpid(), newpid)
print("parent: %d, child: %d\n", pids)
reply = input("q for quit/c for new fork\n")
if reply == 'c':
continue
else:
break
parent()
выход выше кода:
parent: %d, child: %d
(1669, 3685)
q for quit/c for new fork
c
parent: %d, child: %d
(1669, 3686)
q for quit/c for new fork
c
parent: %d, child: %d
(1669, 3688)
q for quit/c for new fork
c
parent: %d, child: %d
(1669, 3689)
q for quit/c for new fork
q
'Я хочу, чтобы раскошелиться дочерний процесс от ребенка process' Так почему бы не попробовать? Сейчас ваш дочерний процесс печатает только сообщение и завершает работу. –