全部博文(396)
分类: 嵌入式
2018-08-07 15:21:12
-
struct sigaction sa;
-
sa.sa_handler = SIG_IGN;//设定接受到指定信号后的动作为忽略
-
sa.sa_flags = 0;
-
if (sigemptyset(&sa.sa_mask) == -1 || //初始化信号集为空
-
sigaction(SIGPIPE, &sa, 0) == -1) { //屏蔽SIGPIPE信号
-
perror("failed to ignore SIGPIPE; sigaction");
-
exit(EXIT_FAILURE);
-
}
-
sigset_t signal_mask;
-
sigemptyset (&signal_mask);
-
sigaddset (&signal_mask, SIGPIPE);
-
int rc = pthread_sigmask (SIG_BLOCK, &signal_mask, NULL);
-
if (rc != 0) {
-
printf("block sigpipe error\n");
-
}
只要在main函数一开始就写入上面这段代码,就能屏蔽掉pthread线程中的SIGPIPE。