c语言slgnal函数 sln函数是什么函数

Linux 环境下的C语言, 关于 kill 发送信号和 signal() 函数, 具体问题在以下代码的注释处

pause()会令目前的进程暂停(进入睡眠状态), 直到被信号(signal)所中断。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了盐津免费建站欢迎大家使用!

当50信号触动了,pause将退出睡眠状态,执行printf和return

C语言中(void)signal(SIGALRM, alarmhandle);是什么意思

signal(SIGALRM, alarmhandle); 表示给当前进程注册SIGALRM信号处理代码,如果收到SIGALRM信号,就会去执行alarmhandle函数

$ man signal

...

SYNOPSIS

#include signal.h

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

DESCRIPTION

The  signal() system call installs a new signal handler for the signal with number signum.  The signal handler is set to sighandler which may be a user specified function, or either SIG_IGN or SIG_DFL.

signal()函数是个系统调用,该函数按signum设定一个新的信号处理句柄(函数).新设定的处理函数可以是用户自定义的函数,也可以是系统指定的SIG_IGN 或 SIG_DFL.

参考代码:

#include signal.h

#include unistd.h

#include stdio.h

#include stdlib.h

void alarmhandle(int sig)

{

printf("recv sig:%d\n", sig );

printf("exit!\n");

exit(0);

}

int main()

{

signal( SIGALRM, alarmhandle );

printf("begin...\n");

alarm(5); //定时器,用于在5秒后产生SIGALRM信号

while( 1 );

return 0;

}

运行结果:

begin...

recv sig:14

exit!

C语言中的signal函数的作用是什么啊

signal()是一种系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。它的真正的名字应该是“Call_that_routine_when_this_interrupt_Comes_in(当该中断发生时调用那个程序)”,调用signal()函数,并通过参数传递告诉它终端类型以及用于处理中断的程序。

ANSIC 标准中,signal()函数的声明如下:

void (*signal (int sig ,void (*func)(int))) (int) ;

signal是一个函数,他返回一个函数指针,后者所指向的函数接受一个int参数并返回void 。


当前文章:c语言slgnal函数 sln函数是什么函数
URL标题:http://hbruida.cn/article/doddgih.html