概述
Linux信号集(sigset)用于以程序集的方式管理信号。信号集的概念比较复杂,它涉及到信号集的初始化和管理。这篇文章将会从以下几个方面来解释一下Linux sigset:如何初始化sigset,如何管理sigset以及sigset的应用。
如何初始化sigset
Linux sigset可以使用sigemptyset, sigfillset和sigaddset函数来初始化。首先,使用sigemptyset函数初始化为空集:
// 初始化为空集
sigemptyset(&set);
然后,使用sigfillset函数初始化为完全集:

// 初始化为完全集
sigfillset(&set);
最后,sigaddset函数可以向sigset中添加一个信号:
// 添加信号到信号集
sigaddset(&set, SIGINT);
如何管理信号集
sigset可以使用sigprocmask,sigsuspend和sigaction函数来管理信号集。
首先,使用sigprocmask函数可以管理当前进程信号屏蔽字:
// 阻塞信号
sigprocmask(SIG_BLOCK,&set,NULL);
其次,使用sigsuspend函数可以暂时取消当前信号屏蔽字:
// 暂时取消信号屏蔽字
sigsuspend(&set);
最后,使用sigaction函数可以将信号sigset多路转移到一个函数:
// 多路转移信号
sigaction(SIGINT,&act,NULL);
应用
Linux sigset可以应用到多任务系统中。例如当一个任务正在执行时,它可以阻塞许多不相关的信号,从而保护其他系统任务不受影响。另外,sigset还可以使多任务系统有条理地处理信号,从而更有效地管理多任务系统。
结论
Linux sigset实现了程序的信号集管理。在初始化和管理上,都可以使用相应的函数来完成。sigset在多任务系统中具有非常重要的意义,可以有效地管理系统中的多任务。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
电子信息是学什么的
电子信息工程已经涵盖很广的范围。 电话交换局里怎样处理各种电话信号,手机是怎样传递我们的声音甚至图象,我们周围的网络怎么样传递数据,甚至信息化时代军队的信息传递中如何保密等知识。 我们通过一些基础知识的学习认识这些东西,并能够进行维护和更先进的技术和新产品的开发。 你首先要有扎实的数学知识,要学习许多电路知识,电子技术,信号与系统,计算机控制原理,信号与系统,通信原理等基本课程。 自己还要动手设计、连接一些电路以及结合计算机的实验。 譬如自己连接传感器的电路,用计算机自己设置小的通信系统,还会参观一些大的公司的电子和信息处理设备,对整体进行了解,理解手机信号、有线电视是如何传输的等,并能有机会在老师指导下参与大的工程的设计。 随着计算机和互联网日益深入到社会生活的多个层面,社会需求量相当大。 现在是一个热门专业。 毕业后干什么——从事电子设备和信息系统的设计、应用开发以及技术管理等随着社会信息化的深入,各行业大都需要本专业人才,而且薪金很高。 可成为:电子工程师——设计开发一些电子,通信器件,起薪一般2000元——6000元/月;项目主管——策划一些大的系统,经验、知识要求很高,起薪一般4000元/月以上;还可以继续进修成为教师,进行科研项目等。 专业是个好专业:适用面比较宽,和计算机、通信、电子都有交叉;但是这行偏电,因此动手能力很重要;另外,最好能是本科,现在专科找工作太难了!当然大虾除外本专业对数学和英语要求不低,学起来比较郁闷要拿高薪,英语是必需的;吃技术这碗饭,动手能力和数学是基本功当然,也不要求你成为数学家,只要能看懂公式就可以了,比如微积分和概率统计公式,至少知道是在说些什么而线性代数要求就高一些,因为任何书在讲一个算法时,最后都会把算法化为矩阵计算(这样就能编程实现了,而现代的电子工程相当一部分工作都是编程)对于动手能力,低年级最好能焊接装配一些小电路,加强对模拟、数字、高频电路(这三门可是电子线路的核心)的感性认识;工具吗就找最便宜的吧!电烙铁、万用表是必需的,如果有钱可以买个二手示波器电路图吗,无线电杂志上经常刊登,无线电爱好者的入门书对实际操作很有好处另一块是单片机、CPLD/FPGA、DSP其中单片机是必会的,51系列单片机就可以,因为这个用得最多;找块51开发板(比较便宜)自己动手编编程序就可以了ARM单片机、FPGA、DSP开发板都比较贵,不过这是趋势,有条件就玩玩吧编程方面:c/c++是要会的,实际上单片机/DSP应用系统就常用c语言来开发数据结构和操作系统是计算机软件专业最核心的课程(北大老师认为,学过这两门课就认为是学过计算机了)大型单片机(比如ARM系列)经常使用嵌入式操作系统(比如uCLinux),因此除了windows编程外,有机会可以玩玩Linux编程另外计算机专业的数据库原理(数据库现在太重要了,最好能学学大型的比如说SQLServer、oracle,也可以学MySQL、Access)、软件工程、计算机体系结构(如果你微机原理的底子厚也可不学)、编译原理(够难的)windows编程:初学者还是用vb吧,真正开发用Delphi/C++Builder比较多,学vc花的代价太大,至于Java/C#现在离底层开发还比较远底层方面还有一块是写驱动(WDM或Linux驱动),不过这些都比较专业,要对操作系统有很深的认识电子工程的课程另一大块就是信号系统、数字信号处理、通信原理、电磁场与微波技术基础,这些课程用到很多数学,学起来比较痛苦而且我觉得本科很难把这些课程学明白(因为你的数学基础不够),不过在理论上能搞明白一些总比稀里糊涂强以上为转载
Linux中的进程创建函数返回时如何判断是父进程返回还是子进程返回?
pid=fork()如果是子进程 , pid = 0如果是父进程 , pid = 子进程的 ID ,大于 0根据 pid 的值 ,就可以判断了
为什么Linux里使用FTP提示没有找到命令
1. 没有安装ftp客户端就会提示没有ftp命令yum -y install ftp 安装下;2. vsftpd是提供ftp服务的相当于是服务端,但是它不提供ftp命令两者集合yum -y install vsftpd ftp
发表评论