signal函数详解
《转载请注明出处》
typedef的使用(为已有的类型增加一个别名)
1.typedef int INT;
2.typedef char CHAR[20]; ==CHAR是字符数组类型
CHAR C1; ==> char C1[20];
3.typedef int (*func)(char,char); == func是函数指针类型(返回值为 int, 参数为两个 char)
func f1; == 定义一个函数指针: int (*f1)(char,char)
################################################
signal函数详解
linux signal函数详解
写法一:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
返回值: sighandler_t类型的函数指针
形参: int, sighandler_t类型函数指针
void (signal(int signum, sighandler_t handler))(int);
==> void (signal(int signum, void (handler)(int)))(int);
写法二:
void ( signal( int sig, void ( handler)( int )))( int );
// 这儿看不出返回值类型, 进行简化
typedef void (sighandler_t)(int) // sighandler_t是void()(int)类型的函
数指针的别名
void ( signal( int sig, void ( handler)( int )))( int );
// 定义一个名为signal( int sig, void ( handler)( int )))的void()(int)类
型函数指针
==> sighandler_t signal( int sig, void ( handler)( int )))
==> sighandler_t signal( int sig, sighandler_t handler)
==> 返回值: sighandler_t类型的函数指针
形参: int, sighandler_t类型函数指针
####################################
使用范例:
使用例子1:
int sig_int(int sig) {printf("sig_int");}
signal(SIGINT, sig_int);
使用例子2:
signal(SIGINT, SIG_IGN); // 忽略SIGINT信号
signal(SIGINT, SIG_DFL); // 对于SIGINT信号,使用默认处理函数