c语言中signal函数 c语言中sign函数怎么用

Linux 环境下的C语言, 关于 kill 发送信号和 signal() 函数, 具体问题在以下代码的注释处【c语言中signal函数 c语言中sign函数怎么用】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
Thesignal() 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函数如何使 , 请举一个列子 。看样子和shell 脚本中的trap 命令差不多 。
就是在程序收到制定的信号时候c语言中signal函数 , 调用指定的函数 。
你需要了解的是信号是系统内部使用的一种机制c语言中signal函数 , 
比如你的程序正在前台运行,你又突然按了下ctrl+c 强制退出,那么程序正在运行 的时候可能就被干掉了 。而 trap 或者siganal 函数就可以让你在某种不正常退出的情况下,再调用你指定的函数 , 可以做些清理工作啊什么的 。
当然,信号是有很多种的,什么情况下有什么信号,你可以看下Linux的说明文档吗 。man trap 好像就可以看到
关于c语言中signal函数和c语言中sign函数怎么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读