Python порождается дочерним подпроцессом, отсоединяется и завершается.

Мне интересно, правильный ли это способ выполнить системный процесс и отсоединиться от родителя, позволяя родителю выйти, не создавая зомби и / или не убивая дочерний процесс. В настоящее время я использую модуль подпроцесса и делаю это ...

os.setsid() 
os.umask(0) 
p = subprocess.Popen(['nc', '-l', '8888'],
                     cwd=self.home,
                     stdout=subprocess.PIPE, 
                     stderr=subprocess.STDOUT)

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

Правильно ли это и является ли это надежным способом сделать это?

В принципе, у меня есть утилита удаленного управления, которая обменивается данными через сокеты и позволяет запускать процессы удаленно, но я должен убедиться, что если удаленное управление умирает, процессы, которые он запустил, продолжают работать без изменений.

Я читал о двойных вилках и не уверен, что это необходимо и / или подпроцесс. POpen close_fds каким-то образом позаботится об этом, и все, что нужно, - это изменить процесс группа?

Спасибо.

Илья

28
задан sehe 24 April 2011 в 20:09
поделиться