gpt4 book ai didi

c - 有没有办法 sigaction() 到具有多个参数的信号处理程序?

转载 作者:行者123 更新时间:2023-12-04 06:10:04 25 4
gpt4 key购买 nike

每次收到 SIGINT 时,我都使用 sigaction() 执行操作。我见过的所有教程都使用这个原型(prototype)作为信号处理程序

void sig_handler(int sig);

有没有办法让它采用更多参数以满足我的需要?所以例如
void sig_handler(char* surname, int age);

这是我的代码:
void sig_handler(int sig) {
printf("SIGINT(%d) received\n", sig);
}

int main( ){
struct sigaction act;
act.sa_handler=sig_handler;

sigaction(SIGINT, &act, NULL);

while(1){};
return 0 ;
}

最佳答案

不是直接的,但你可以设置一个全局变量来告诉你的 sig_handler()该怎么办。

int ACTION = 0;

void sig_handler(int sig) {
if (sig == SIGINT) {
switch (ACTION) {
case 0: other_function(char* surname, int age);
break;
// more cases
default:
;
}
} else if ( .... // more signals
}
}

int main( ){
struct sigaction act;
act.sa_handler=sig_handler;

sigaction(SIGINT, &act, NULL);

while(1){};
return 0 ;
}

关于c - 有没有办法 sigaction() 到具有多个参数的信号处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881389/

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