Answers:
通常,以这种方式这样做应该没问题。
当您单击“ X”以关闭终端窗口时,即从桌面(GNOME,KDE等)向终端应用程序发送“信号”,并告知其自身关闭。由于您在此Shell中运行MATLAB,因此将其视为终端应用程序的子进程。
因此,成为父进程的部分责任是,您又将同样的“信号”发送给您的孩子。
现在,如果您从概念上理解了我刚刚解释的内容,那么我们可以替代更多的实际术语。
首先带有“信号”,实际上,您可以发送给Unix进程的一整套不同的信号。为了保持它的简单有4个,你会经常看到,SIGHUP
,SIGTERM
,SIGINT
,和SIGKILL
。
西格普
当SIGHUP信号的控制端子关闭时,它会发送到进程。它最初旨在通知串行线掉线的过程。在现代系统中,此信号通常意味着控制伪或虚拟终端已关闭。
信号
SIGTERM信号是用于导致程序终止的通用信号。与SIGKILL不同,此信号可以被阻止,处理和忽略。这是礼貌地要求程序终止的正常方法。
SIGINT
当用户键入INTR字符(通常为Cc)时,将发送SIGINT(“程序中断”)信号。
杀人狂
SIGKILL信号用于立即终止程序。它不能被处理或忽略,因此总是致命的。也不可能阻塞该信号。
注意: SIGINT
当您在运行中使用Ctrl+ C从命令行“破坏”程序时,将发送该消息。
最有可能SIGTERM
是您的窗口环境正在调用并将其传递到您的终端。然后,您的终端很可能会发送SIGHUP
到MATLAB。该信号使所有进程都有机会自己进行任何本地清理(关闭文件,结束进程等)。
您可以使用命名错误的命令自己发送信号kill
。因此,将SIGTERM
信号发送到您的终端或SIGHUP to MATLAB, you could determine their PID using
ps`,然后运行以下命令向他们发送信号:
$ kill -SIGTERM <PID>
或这个:
$ kill -SIGHUP <PID>
您可以使用以下命令获取信号的完整列表:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
注意信号有数字吗?您经常会看到它们像这样使用而不是按名称显示:
$ kill -15 <PID>
或臭名昭著的-9
,它可以杀死几乎所有进程。
很有可能,但是根据打开的应用程序,您将丢失数据。例如,如果您打开了文件编辑器,则可能会丢失一些更改,如果您未正确保存并退出它们。如果您担心,请正确注销/退出终端。如果您不喜欢输入exit
或logout
尝试Ctrl-D
。
Ctrl-D
,这实际上仅适用于命令提示符。