У меня есть main.py
, как показано ниже:
#!/usr/bin/env python3
import time
import os
import subprocess
fs = './runner.py'
child_process = subprocess.Popen(
'/usr/bin/python3 ' + fs,
shell=True
)
print('main process pid', os.getpid())
print('sub process pid', child_process.pid)
time.sleep(10)
os.system('kill ' + str(child_process.pid))
А runner.py
:
#!/usr/bin/env python3
import os
import time
TIME_TO_CHECK_STATUS = 1
def init():
pid = os.getpid()
print('inside child process:')
print(' --> pid: ', pid)
def check():
time.sleep(TIME_TO_CHECK_STATUS)
check()
return pid
return check()
if __name__ == '__main__':
init()
Запуск main.py в терминале при следующем результате:
Почему идентификатор дочернего процесса, который мы получили от main.py
, отличается от того, что мы получили от дочернего процесса внутри?