#include <signal.h>
#include <pthread.h>
#include <stdio.h>
void intr(int sig,siginfo_t *info,void *context)
{
printf("caught by %d\n",pthread_self());
}
void * thread(void * arg)
{
//安装一个SIGINT信号处理
struct sigaction st;
sigemptyset(&st.sa_mask);
st.sa_flags = SA_SIGINFO;
st.sa_handler = intr;
sigaction(SIGINT, &st, NULL);
int ret ;
while ( 1 )
{
ret = sleep(10);
if(ret)
printf("interrupted\n");
}
}
main()
{
pthread_t tid;
sigset_t mask,oldmask;
setbuf(stdout,0);
printf("parent is %d\n",pthread_self());
pthread_create(&tid,0,thread,0);
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
if (pthread_sigmask(SIG_BLOCK, &mask, &oldmask))
printf("SIG_BLOCK error\n");
sleep(200) ;
}
请注意红色代码,要在主线程里面阻塞sigint,这样ctrl+c就会把信号发给子线程了
分享到:
相关推荐
c++多线程同步——信号量。非常简单的MFC工程。
C#多线程实时显示系统时间C#多线程实时显示系统时间C#多线程实时显示系统时间C#多线程实时显示系统时间C#多线程实时显示系统时间
Linux 多线程应用中如何编写安全的信号处理函数
采用QT5开发的多线程同步,包括信号量,互斥量,等待条件等,里面包含多个生产者,一个消费者。如需多个消费者,可直接复制粘贴进行模拟。
windowsC++多线程加锁信号量共享内存
c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程c_多线程...
多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程多线程
DELPHI多线程分布式实时多任务系统中的应用.PDFDELPHI多线程分布式实时多任务系统中的应用.PDF
C#中的多线程C#中的多线程C#中的多线程C#中的多线程C#中的多线程
Fleck.dll支持websocket引自博客文章多线程下的websocket实时通信,具体使用方式请看文章多线程下的websocket实时通信,包括具体的服务器端跟客户端编码。
利用多线程原理模拟生产与消费的互斥同步过程,使用了信号量
多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子多线程列子
Qt中利用OpenCV2.4.4多线程打开多摄像机 每个线程处理一个摄像机,从中拿出帧显示到主线程的Label控件上 模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 ...
多串口多线程技术在实时数据采集与控制中的应用.rar多串口多线程技术在实时数据采集与控制中的应用.rar
Qt5多线程,使用QSemaphore类实现生产者和消费者问题。
java多线程扫描器,实现对任意主机端口的扫描
多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天多线程聊天
利用多线程,实时显示时间。 利用多线程,实时显示时间。 利用多线程,实时显示时间。