按下 Ctrl+Z 时不会暂停的 C 程序

cserver side programmingprogramming更新于 2024/11/3 3:38:00

在编程中,当程序发生故障并在终端编译器中异常运行时,程序员有权明确停止程序运行。要明确停止程序,用户必须知道需要按下的正确键盘快捷键。

要终止代码块的执行,有两种类型的键盘快捷键可用。

  • Ctrl+c − 它用于停止程序的执行,需要一点时间来完成 i/o 操作,然后暂停执行。它向终止的进程发送 SIGINT 信号。在某些语言中,有办法处理这个 SIGINT,比如 C 中的信号函数。

  • Ctrl+z −它用于停止程序的执行,与进程相关的所有任务都关闭,执行暂停。它向终止程序的进程发送一个SINTSTP信号,尽管实现相同,但与其他信号相比,该信号更强大。这也可以处理。

在这里,我们将编写一个能够超越ctrl+z调用的代码。程序不会暂停,而是会打印"ctrl+z无法暂停此代码"。

如上所述,ctrl+z调用可以在C编程语言中处理。当调用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; }

输出

// 无限循环

相关文章