我对在 OS X 中关闭终端应用程序感到困惑。为什么关闭终端应用程序后进程不会被终止?例如,我调用 python 解释器,然后使用 ctrl+z 关闭它,当我尝试关闭终端时,它会询问我是否正在运行 python 进程。抱歉屏幕截图中是俄语,但您可以看到 2 个 python 进程(我调用了两次)。
这非常烦人,尤其是当您使用 minicom 等串行端口时。每次调用后,您都必须手动终止进程。有没有办法自动终止它们?
答案1
当您按下Ctrl+时z,您将向当前在前台运行的进程发送 SIGTSTP(“终端停止”信号)。它会导致进程暂停运行,但进程仍保留在内存中。
fg
您可以使用(在前台)或bg
(在后台)命令恢复暂停的进程。
要终止一个进程,您需要发送一个 SIGINT(“中断”信号),您可以通过按Ctrl+c或从另一个进程发送 SIGKILL 来执行此操作(kill -s SIGKILL <pid>
)。
为什么关闭终端应用程序后进程不会被终止?
它们实际上已经被杀死了,并且你会看到一条警告消息,提示你关闭应用程序时暂停的进程将被杀死。
答案2
键入jobs
以查看后台进程列表:
[1] job1
[2] job2
键入kill %n
以终止进程,其中 n 是进程的编号。
答案3
要完全退出 Python 解释器,请使用ctl+ D。
ctl+D表示:Python 解释器和大多数从标准输入读取的 Unix 命令的输入文件结束。
你的 Python 解释器将不再运行,并且你将不会再收到无用的警告Terminal
。