我的朋友在macOS环境中,他希望在他的python脚本结束时调用os.system('exit')
以使终端关闭。它没有。这并不让我感到惊讶,但我想知道在进行此调用时,python脚本和终端之间究竟发生了什么。
在我的心理模拟中,终端应该告诉你仍有正在运行的工作,但这种情况也不会发生。
作为一个侧面问题:当一个进程调用它时,一些不太常见的终端会关闭吗?
答案 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退出。