gpt4 book ai didi

C 信号处理中的 Ctrl-C 问题

转载 作者:行者123 更新时间:2023-11-30 15:42:07 24 4
gpt4 key购买 nike

我有关于信号处理的问题。

假设我有两个程序同时运行。我将它们称为程序 1 和程序 2。

我在单独的终端窗口中运行它们,因为一个程序等待另一个程序启动。它们被设计为持续运行,直到我在两个窗口中按下 ctrl-c。我感觉这个方法有点麻烦。所以我想做的就是向其中一个程序添加一些东西。

意思是,我可以使用 ctrl-c 来停止程序 1,一旦程序 2 知道程序 1 不再处于事件状态,它就会停止。我在网上查了一下是否有这样的示例或我不知道的 C 语言中的某些部分,并且我遇到了信号处理。

我知道信号处理涉及使程序根据给定的信号或信号的结构进行各种执行。这是正确的使用方法还是还有其他方法?

我在网上看到,如果信号是 ctrl-C,那么使用信号处理可能会弄乱终端中的 ctrl-C 命令?

关于信号处理的解释以及一些示例代码将非常感激。

根据给出的答案,我根据给出的内容编写了示例代码:

#include <signal.h>
......
......
sigset_t SIGUSR1;
sigset_t SIGUSR2;
int signal;

void trap(int signal);
......
......
void trap(int signal)
{
int signal;
signal == SIGUSR1
}

抱歉,如果我写这篇文章看起来很愚蠢,但我仍然想知道这是如何工作的。

最佳答案

您可以使用 header signal.h 处理信号CTRL+C 使用 SIGINT

处理

它的工作原理可能是这样的:

   void func(int sig)
{
switch(sig)
{
case SINGINT:
//Do whatever you want
break;
default :
break;
}
}

int main()
{
//Handle SIGINT
signal(SIGINT,func);

return 0;
}

关于C 信号处理中的 Ctrl-C 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com