python中的os.system('exit')

时间:2011-09-09 23:34:32

标签: python process terminal exit terminate

我的朋友在macOS环境中,他希望在他的python脚本结束时调用os.system('exit')以使终端关闭。它没有。这并不让我感到惊讶,但我想知道在进行此调用时,python脚本和终端之间究竟发生了什么

在我的心理模拟中,终端应该告诉你仍有正在运行的工作,但这种情况也不会发生。

作为一个侧面问题:当一个进程调用它时,一些不太常见的终端会关闭吗?

3 个答案:

答案 0 :(得分:4)

阅读帮助:

Execute the command (a string) in a subshell.

启动子shell,并在该子shell中运行exit

要退出封闭终端,您必须终止父级。一种方法是:

os.system("kill -9 %d"%(os.getppid())

答案 1 :(得分:2)

system函数启动另一个shell来执行命令。所以在这种情况下,你的Python脚本启动一个shell并在那里运行“exit”命令,这使得该进程退出。但是,Python脚本本身(包括运行它的终端)继续运行。如果意图是终止终端,则必须获取父进程ID并发送一个请求它停止的信号。这会杀死Python脚本和终端。

答案 2 :(得分:1)

请记住,system首先产生/分叉子shell来执行其命令。实际上,您只要求子shell退出。