信号发送与捕捉: int kill(pid_t pid, int sig);可以发送信号给进程或进程组。 int raise(int sig);与kil()函数不同,raise()函数允许进程向自身发送信号。 unsigned int alarm(unsigned int seconds);设置定时器,当定时时间到时向进程发送SIGALARM信号。 int pause(void);将进程挂起直至捕捉到信号为止。 信号处理函数: signal()函数勇于处理前32种非实时信号的处理,不支持信号传递信息,使用简便、易于理解。Linux还支持一个更健壮的信号处理函数sigaction()。
signal()函数: typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 函数原型理解:signal函数有两个参数 int signum 和 一个指向函数的指针 handler,这个函数有一个 int 参数,返回 void。而 signal 返回值是指向函数的指针,这个函数有一个int 参数,返回 void。 signal_test.zip
sigaction()函数: int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); struct sigaction { void (*sa_handler)(int); void (*sa_sigaction)(int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); } sa_mask gives a mask of signals which should be blocked during execu-tion of the signal handler. In addition, the signal which triggered the handler will be blocked, unless the SA_NODEFER flag is used.
信号集函数组: int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signum); int sigdelset(sigset_t *set, int signum); int sigismember(const sigset_t *set, int signum); 设置信号屏蔽位: int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);