os.system ('выход') в питоне - PullRequest
       42

os.system ('выход') в питоне

2 голосов
/ 10 сентября 2011

Мой друг находится в среде macOS, и он хотел вызвать os.system('exit') в конце своего скрипта на python, чтобы закрыть терминал.Это не так.Меня это не удивляет, но я хотел бы знать, что именно происходит между сценарием Python и терминалом , когда выполняется этот вызов.

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

В качестве дополнительного вопроса: будут ли закрываться некоторые менее распространенные терминалы, когда процесс вызывает это?

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

прочитайте справку:

Execute the command (a string) in a subshell.

Запущена подоболочка, и в этой оболочке запущено exit.

Чтобы выйти из ограждающего терминала, вам нужно убить родителя. Один из способов сделать это:

os.system("kill -9 %d"%(os.getppid())
2 голосов
/ 10 сентября 2011

Функция system запускает другую оболочку для выполнения команды.Таким образом, в этом случае ваши скрипты Python запускают оболочку и запускают там команду «exit», которая завершает этот процесс.Однако сам скрипт Python, включая терминал, на котором он выполняется, продолжает работать.Если целью является уничтожение терминала, вы должны получить идентификатор родительского процесса и отправить сигнал с просьбой остановить его.Это убьет как скрипт Python, так и терминал.

1 голос
/ 10 сентября 2011

Помните, что system сначала создает / разветвляет вложенную оболочку для выполнения своих команд. По сути, вы запрашиваете только вложенную оболочку для выхода.

...