#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++编程中,多线程技术是一种强大的工具,它允许程序同时执行多个任务,从而提高了效率和响应性。本文将深入探讨C++中的多线程,并解释如何创建、管理和同步线程,以及讨论相关的重要概念。 首先,C++11引入了...
python多线程中要响应Ctrl+C的信号以杀死整个进程,需要: 1.把所有子线程设为Daemon; 2.使用isAlive()函数判断所有子线程是否完成,而不是在主线程中用join()函数等待完成; 3.写一个响应Ctrl+C信号的函数,修改...
"【转载】可扩展多线程异步Socket服务器框架EMTASS 2_0 - 个人开发历程知识库 - 博客园.mht"来看,这可能是一个关于EMTASS框架的详细教程或开发者笔记,记录了作者在开发2.0版本过程中遇到的问题、解决方案以及改进...
Boost库,作为C++的一个重要扩展库,提供了大量的高效、实用的工具,其中线程库(thread)是其核心部分之一,广泛用于多线程编程。本文将通过罗剑锋先生的书本配例,基于Boost 1.52.0版本,详细探讨如何在Visual ...
易语言简易线程池的实现。...线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级
每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。 具体参见:http://baike.baidu.com/view/262150.htm 二.实现的过程概述:...
5. Qt包含对多线程编程的支持,允许创建多线程应用程序,有效利用多核处理器的能力。 6. Qt具有一个强大的构建系统,可以让开发者通过简单的配置来编译和部署应用程序。 7. Qt还提供了一个模型/视图框架,用于管理...
C语言的编程基础涉及数据类型、控制结构、函数、指针等核心概念,而高级编程则涵盖更复杂的话题,如动态内存管理、文件操作、多线程和进程间通信。 内容部分由于OCR扫描结果存在文字识别错误和遗漏,导致部分信息...
此外,文档还强调了开发中的注意事项,比如模块程序与用户程序的匹配、线程的创建、系统函数返回值的定义、文件系统的使用、定时器、GPIO操作、动态内存分配、信号量的使用、数据输入输出、Socket接口以及中断同步等...
5. 程序语言理论:研究如何设计支持并发的语言构造,例如线程、进程、消息传递、锁、信号量等,并探讨它们的语义和类型系统。 6. 操作系统支持:分析操作系统如何提供并发执行的机制,包括进程调度、内存管理、和...
进程是操作系统中执行程序的实例,而进程管理则确保多任务环境下的公平性和效率。 2. **内存管理**:这部分涉及内存分配、回收、页面置换算法(如LRU、LFU、最佳替换算法等)以及虚拟内存的实现。内存管理确保了多...
软件框架说明软件框架如图2所示,软件定时器以4Hz频率给星务线程信号量,星务线程启动后,检测其他各个线程的运行状况,核对线程运行时间,核对软件狗计数是否超过阈值,核对运行时间片,当都满足后,给所有线程信号...
这包括了进程的生命周期管理,如创建、唤醒、睡眠和终止,以及多线程环境下的同步原语,如互斥锁、信号量和条件变量。 其次,内存管理是操作系统的重要组成部分。在PINTOS中,学生可能需要设计和实现虚拟内存系统,...