按下Ctrl + Z时不挂起的C程序
在程序出现故障并在终端编译器中异常运行时进行编程时,程序员可以明确停止程序运行。为了明确停止程序,用户必须知道需要按下的正确的键盘快捷键。
要终止代码块的执行,可以使用两种类型的键盘快捷键。
Ctrl+c-用于停止程序的执行,需要一些时间才能完成I/O操作,然后中止执行。它向进程终止发送SIGINT信号。在某些语言中,有多种方法可以处理此SIGINT,例如C中的signal函数。
Ctrl+z-用于停止程序的执行,所有与该流程相关的任务都将关闭,并且执行将被挂起。尽管实现相同,但它将SINTSTP信号发送到终止程序的进程,但与其他信号相比,此信号功能更强大。这也可以处理。
在这里,我们将编写一个能够超越ctrl+z调用的代码。而不是暂停程序,程序将输出“ctrl+z无法暂停此代码”。
如上,可以使用C编程语言处理ctrl+z调用。当SINTSTP信号被调用以结束程序处理时。我们将重新定义该信号的作用,以便在使用时不终止代码并打印一行。
该signal()
方法用于处理此类事情。
示例
#include <stdio.h> #include <signal.h> void signalhandler(int sig_num){ signal(SIGTSTP, signalhandler); printf("Cannot execute Ctrl+Z\n"); } int main(){ int a = 1; signal(SIGTSTP, signalhandler); while(a){ } return 0; }
输出结果
// an infinite loop