中止或暂停程序的信号: intr、quit、stop

Unix提供了几种中止或暂停程序的信号。这些信号是intr、quit和stop。程序员

  • intr

intr信号有两个用途:首先可使用它中止一个僵死的程序。可是一些程序被编程为忽略intr信号。在这种状况下,程序总会提供一种明肯定义的结束程序的方法(一些quit类型的命令)。经过忽略intr信号,程序能够防止不当心按下^C而致使程序故障。在这种状况下,咱们称程序封闭了intr信号。例如vim就封闭了intr信号。当你在shell提示处键入Unix命令时,intr信号的第二个用途就出现了。若是键入了一条命令,而你改变了主意,能够按下^C以取消命令。shell

肯定不要混淆了intr和kill。当键入一条命令时,intr取消命令;而kill删除命令行上的全部字符。编程

  • quit

除了intr以外,还有另一种键盘信号quit,能够用来中止程序。quit键一般是^\。vim

intr和quit之间有什么区别呢?区别并不大。之前quit主要由须要终止测试程序的高级程序员使用。当按下^\时,它不只中止程序,并且还会告诉Unix为此时内存中的内容制做一份副本。该信息存储在一个磁芯文件(core file)中,也就是一个名为core的文件中。而后程序员可使用特殊的工具分析磁芯文件,查找什么地方出了问题。工具

如今程序员拥有了更好的调试工具,所以在大多数系统上,quit信号再也不生成磁芯文件,尽管一些编程环境仍在使用磁芯文件帮助调试。若是没有调试过程序,可是一个名为core的文件神秘地出如今你的一个目录中,那么这意味着你运行的程序出现了严重的错误而停止。除非真的须要这个文件,不然能够删除它。实际上,你应该删除这个文件,由于core文件至关庞大,没有理由去浪费空间。测试

  • stop

若是一个程序生成的输出太多,在屏幕上一闪而过。咱们能够按下^S键发送stop信号。这个信号告诉Unix临时中止屏幕显示。一旦显示过程暂停,你能够经过按下^Q发送start信号从新启动屏幕显示。ui

可是你应该理解^S只是告诉Unix中止输出的显示,它不会暂停正在执行的程序。程序会继续执行,不会中止生成输出。Unix将存储输出,所以输出不会丢失,一旦你按下^Q,剩下的所有输出将显示。若是在屏幕显示暂停时生成了大量的新数据行,那么一旦按下^Q,这些新数据行将飞速地冲过。spa

相关文章
相关标签/搜索