Chocobo
Авг. 13, 2015 12:30:21
Добрый день!
Подскажите, пожалуйста, как можно запустить из программы процесс, который останется рабочим после завершения родительского скрипта.
Другими словами, необходимо чтоб родительский скрипт вызвал подпроцесс и завершился, а дочерний отрабатывал дальше.
Добавлю: python2.6, ОС - CentOS'и и возможно freebsd
сейчас обнаружил os.fork, но пока не понял, то ли это что мне нужно…
Chocobo
Авг. 13, 2015 13:02:07
Вопрос снимается, я копал в нужную сторону:
import os,time
pid=os.fork() # создаём дочерний процесс
if pid!=0: # завершается родитель, дочерний вернет pid =0
sys.exit(0)
while True # Дальше работает только форкнутый процесс
time.sleep(10)
P.s: Почитать можно здесь:
https://docs.python.org/2/library/os.html#os.fork и
http://www.cyberforum.ru/python/thread630830.html
JOHN_16
Авг. 13, 2015 15:05:39
Chocobo
вообще для запуска внешних приложений есть модуль subprocess . fork работает только для UNIX подобных систем. Это конечно ваш случай, но все же subprocess может разные задачи решать.
Chocobo
Авг. 14, 2015 11:27:39
JOHN_16
Спасибо за дополнение, с subprocess я немножко знаком.
Поправьте, если я не прав, насколько я понял при вызове subprocess.call() - родитель будет ждать исполнения функции, а мне нужно было продолжить обработку только после завершения родительского процесса.
doza_and
Авг. 14, 2015 20:48:38
Chocobo
subprocess.call()
Есть subprocess.Popen. вообще в этом модуле много чего есть кроме call читайте документацию.