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语言中的exit函数
exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束,跳回操作系统。
在c语言中: exit(0):表示正常退出;exit(1):表示异常退出,这个1是返回给操作系统;值是返回操作系统的:0是正常退出,而其他值都是异常退出,所以我们在设计程序时,可以在推出前给一些小的提示信息,或者在调试程序的过程中查看出错原因。
使用exit()时,可以不论main()的返回值类型,它的头文件是 stdlib.h。
扩展资料:
进程函数:所在函数库为stdlib.h、process.h
void abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,并异常终止程序 无返回值。
void _exit(int status)终止当前程序,但不清理现场。
void exit(int status) 终止当前程序,关闭所有文件,写缓冲区的输出(等待输出),并调用任何寄存器的"出口函数",无返回值。
参考资料:百度百科-C语言函数
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语言中信号问题
信号是程序执行过程中出现的异常情况。它可能是由程序中的错误造成的,例如引用内存中的一个非法地址;或者是由程序数据中的错误造成的,例如浮点数被0除;或者是由外部事件引发的,例如用户按了Ctrl+Break键。
你可以利用标准库函数signal()指定要对这些异常情况采取的处理措施(实施处理措施的函数被称为“信号处理函数”)。signal()的原型为:
#include signal.h
void(*signal(int hum,void(*func)(int)))(int);
如果定义一个typedef,理解起来就容易一些了。下面给出的sigHandler_t类型是指向一个程序的指针,该函数有一个int类型的参数,并且返回一个void类型:
typedef void(*sigHandler_t)(int);
sigHandler_t signal(int num , sigHandler_t func);
signal()有两个参数,分别为int类型和sigHandler_t类型,其返回值为sigHandler_t类型。以func参数形式传递给signal()的那个函数将成为第num号异常情况的新的信号处理函数。signal()的返回值是信号hum原来的信号处理函数。在设置了一个暂时的信号处理函数之后,你可以利用该值恢复程序先前的行为。num的可能值依赖于系统,并且在signal.h中列出。func的可能值可以是你的程序中的任意函数,或者是SIG_DFL和SLG_IGN这两个特别定义的值之一。SIG_DFL是指系统的缺省处理措施,通常是暂停执行程序;SIG_IGN表示信号将被忽略。
网页题目:c语言信号处理函数 C语言信号量
浏览路径:http://scgulin.cn/article/dodoedo.html