不暂停 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

更新于: 2019-09-19

1K+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告