不暂停 Ctrl+Z 的 C 程序
在编程中,当程序出现故障并在终端编译器中异常运行时,程序员有权显式停止程序运行。为了显式停止程序,用户必须知道需要按下的正确键盘快捷键。
要终止代码块的执行,可以使用两种类型的键盘快捷键。
Ctrl+c - 用于停止程序的执行,它需要花费一些时间来完成 i/o 操作,然后暂停执行。它向进程发送一个SIGINT信号,该信号将被终止。在某些语言中,有一些方法可以处理此SIGINT,例如 C 语言中的信号函数。
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
"); } int main(){ int a = 1; signal(SIGTSTP, signalhandler); while(a){ } return 0; }
输出
// an infinite loop
广告