LINUX.ORG.RU

python: Как работает os.system?


0

1

В питонной программе пишу:

os.system("/path/to/binary --parameter &")

Запускается баш или zsh (зависит от /etc/passwd для данного юзера), в данном шелле выполняет данную строчку, которая приводит к запуску процесса «в фоне» с немедленным возвратом из os.system() естественно. Какая судьба запущенного шелла при возврате os.system()? Он продолжает работать или ему посылается какой-то сигнал? Какой? SIGTERM? os.system() дожидается завершения шелла? А шелл что делает, посылает процессам, которые запустил, сигнал SIGTERM или нет? Если посылает, то дожидается их смерти или нет?

Что происходит при завершении работы python? Посылается какой-то сигнал шеллу? SIGTERM? А шелл посылает какие сигналы процессам, которые запустил? То же SIGTERM? Шелл умирает не дождавшись завершения процессов или дождавшись? А питон умирает дождавшись завершения шелла или нет?

Просто не используй os.system, используй subprocess.Popen.

vasilenko ★★ ()
Ответ на: комментарий от schizoid

При том, что system() запускает шелл и передаёт всё мясо ему, насколько я помню.

kiverattes ★☆ ()
python -c 'import os; os.system("trap \"echo shell_exited\" EXIT; sleep 1 && echo sleep_exited &")'
gv ()

Сигналов никто не посылает.

gv ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.