OS X 终止终端进程

OS X 终止终端进程

我对在 OS X 中关闭终端应用程序感到困惑。为什么关闭终端应用程序后进程不会被终止?例如,我调用 python 解释器,然后使用 ctrl+z 关闭它,当我尝试关闭终端时,它会询问我是否正在运行 python 进程。抱歉屏幕截图中是俄语,但您可以看到 2 个 python 进程(我调用了两次)。

OS X 终端屏幕截图

这非常烦人,尤其是当您使用 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

相关内容