gpt4 book ai didi

c - 在ubuntu中使用sigaction()实现Signal()

转载 作者:行者123 更新时间:2023-11-30 15:50:48 25 4
gpt4 key购买 nike

我正在编写一个客户端/服务器应用程序,其中客户端提供文件名,然后服务器将其发送到客户端,最后客户端将保存它。

所以我想让信号处理程序来处理父子之间的僵尸问题,所以信号代码:

Sigfunc *
signal(int signo, Sigfunc *func)
{
struct sigaction act, oact;

act.sa_handler = func;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if (signo == SIGALRM) {
#ifdef SA_INTERRUPT
act.sa_flags |= SA_INTERRUPT; /* SunOS 4.x */
#endif
} else {
#ifdef SA_RESTART
act.sa_flags |= SA_RESTART; /* SVR4, 44BSD */
#endif
}
if (sigaction(signo, &act, &oact) < 0)
return(SIG_ERR);
return(oact.sa_handler);
}
/* end signal */

文件名是myHeader.h编译文件时的错误是:

gcc -Wall -I/home/zmhnk/Desktop/ -o "myHeader" "myHeader.h" (in directory: /home/zmhnk/Desktop)
myHeader.h:281:1: error: unknown type name ‘Sigfunc’
myHeader.h:282:19: error: unknown type name ‘Sigfunc’
Compilation failed.

那么如何解决这个问题呢?

最佳答案

您需要声明 Sigfunc,因此请在头文件中放置如下内容:

typedef void (*Sigfunc)(int sig_no);

在你的头文件中。

由于已经有一个名为 signal 的标准函数,因此您需要将函数命名为其他名称。

关于c - 在ubuntu中使用sigaction()实现Signal(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579950/

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