Подтвердить что ты не робот

Вызвать подпроцесс python как демона и выйти

Я использую пару программ на основе python, один из которых должен вызывать второй.

Но это должно быть сделано так, что первая программа делает второй демоном (или работает в фоновом процессе), а затем выходит, не дожидаясь окончания второй программы.

Возможно ли это в Python?

Я смотрел модуль os.fork, subprocess, но я довольно запутан как правильный способ добиться этого...

4b9b3361

Ответ 1

Вы можете использовать subprocess.Popen для этого:

import subprocess

cmd = ['/usr/bin/python', '/path/to/my/second/pythonscript.py']
subprocess.Popen(cmd)

Вы можете перенаправить stdout и stderr где-нибудь, вы можете сделать это, передав stdout=<file_obj> в конструктор Popen.

Ответ 2

"Демон" содержит более конкретное определение, чем просто "фоновый процесс". По умолчанию Popen выполнит подпроцесс и вернет управление вашей программе для продолжения работы. Тем не менее, это ничего не говорит о работе с сигналами (в частности, SIGHUP, если пользователь выходит из своей оболочки до завершения фонового процесса) или отключается от stdin, stderr, stdout и любых других дескрипторов файлов, открытых во время вызова Popen. Если вы действительно хотите, чтобы вам нужен демон, вы должны использовать модуль python-daemon, реализация PEP 3143. Это касается брутто которые вы не хотите думать.