linux网络编程二十八:多线程编程之统一信号处理
2014-05-19 16:04
387 查看
1. 以下代码取自pthread_sigmask函数的man手册。它实现了在一个线程中统一处理信号。
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <errno.h> #define handler_error_en(en, msg) \ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) static void* sig_thread(void *arg) { sigset_t *set = (sigset_t*)arg; int s, sig; for (;;) { //等待信号 s = sigwait(set, &sig); if (s != 0) handler_error_en(s, "sigwait"); printf("Signal handling thread got signal %d\n", sig); } } int main(int argc, char *argv[]) { pthread_t thread; sigset_t set; int s; //在主线程中设置信号掩码 sigemptyset(&set); sigaddset(&set, SIGQUIT); sigaddset(&set, SIGUSR1); s = pthread_sigmask(SIG_BLOCK, &set, NULL); if (s != 0) handler_error_en(s, "pthread_sigmask"); s = pthread_create(&thread, NULL, &sig_thread, (void*)&set); if (s != 0) handler_error_en(s, "pthread_create"); pause(); return 0; }
相关文章推荐
- C++ 知识点(完):高级编程:模板,预处理器,信号处理,多线程,Web编程
- C# 多线程并发处理数据库数据,发送信号等待处理完统一插入.
- C# 多线程并发处理数据库数据,发送信号等待处理完统一插入
- C# 多线程并发处理数据库数据,发送信号等待处理完统一插入.(转)
- C++ 知识点(完):高级编程:模板,预处理器,信号处理,多线程,Web编程
- 多线程编程时的信号处理
- Linux 多线程应用中如何编写安全的信号处理函数
- Linux下C语言编程--信号处理函数
- Linux 多线程应用中编写安全的信号处理函数
- Linux 多线程应用中如何编写安全的信号处理函数
- 套接口编程理论基础:处理SIGCHLD信号
- Linux下C语言编程入门-10关于信号处理操作
- C++多线程编程以及epoll处理socket通信时多端口问题
- linux 多线程编程的信号问题
- linux操作系统下c语言编程入门 -- (5)信号处理
- 多线程应用中编写安全的信号处理函数
- 关于多线程编程您不知道的 5 件事 有关高性能线程处理的微妙之处
- Linux下C语言编程 -- 信号处理函数
- Linux下C语言编程--信号处理函数
- 多线程环境下的信号处理