c语言 signal作用,有人可以解释一下C语言中signal()语法的含义吗?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

C declaration from standard signal Library

这是语法链接的参考。 我只了解函数指针的语法。 但这太复杂了,请解释。

http://www.cplusplus.com/reference/clibrary/csignal/signal/

我正在尝试了解给定的精确语法(一些我无法解决的指针混乱)。

您是否已阅读有关信号的Wiki?

另外,请更正您的帖子,链接未通过。

不要误会我的意思。 我正在投票关闭并查看dup,这是您问的:P

+1重复关闭。

在这里查看我的答案。

@John Bode很棒的答案!

signal()很容易理解,这是我在注释中提到的链接中的示例代码:

//This is a signal handling function. When your main program gets a signal, it

// will call this function. The function just prints a message.

static void catch_function(int signal) {

printf("Interactive attention signal caught.");

}

int main(void) {

//register to catch the interrupt signal.

if (signal(SIGINT, catch_function) == SIG_ERR) {

printf("An error occurred while setting a signal handler.

");

return EXIT_FAILURE;

}

while(1)

{

printf("do stuff

");

sleep(1);

}

}

现在,这段代码将永远循环(执行某些操作),直到获得^ C(ctrl + C)中断信号。在那个时间点,它将按照我们告诉它要做的一切去做:

mike@linux-4puc:~> ./a.out

do stuff

do stuff

^CInteractive attention signal caught.do stuff

do stuff

do stuff

do stuff

do stuff

^CInteractive attention signal caught.do stuff

信号功能定义为:

typedef void (*sighandler_t)(int); //this just means a pointer to a function

//that looks like:  void sighandler(int)

sighandler_t signal(int signum, sighandler_t handler);

意思是:

指向处理信号的函数的指针可以称为" sighandler_t"

满足sighandler_t类型的函数无需返回任何内容,并采用int

然后,信号函数将捕获信号类型的参数,并使用满足" sighandler_t" typedef的函数。

然后在系统级别,当程序运行时,如果有信号进入并且我们已经对其进行处理,那么我们就会这样做,如果我们没有适当的处理,则操作系统会采取默认操作。

如果从上面的示例中删除信号调用,您将看到ctrl + C现在可以杀死程序,而不仅仅是允许信号处理程序运行。

回答你的问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值