linux 信号处理 四】的更多相关文章

一.信号生命周期 从信号发送到信号处理函数的执行完毕 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程中注册完毕:信号在进程中的注销完毕:信号处理函数执行完毕.相邻两个事件的时间间隔构成信号生命周期的一个阶段. 下面阐述四个事件的实际意义: 信号"诞生".信号的诞生指的是触发信号的事件发生(如检测到硬件异常.定时器超时以及调用信号发送函数kill()或sigqueue()等). 信号在目标…
sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作). 他是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该使用这个接口) 给信号signum设置新的信号处理函数act, 同时保留该信号原有的信号处理函数oldact int sigaction(int signo,const struct sigaction *restrict act, struct sigaction *restrict oact);…
[摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等.最后介绍了应用层的相关处理,主要包括信号处理函数的安装.信号的发送.屏蔽阻塞等,最后给了几个简单的应用实例. [关键字]软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocmask,sigset_t 1       信…
  因为要处理最近项目中碰上的多个子进程退出信号同时到达,导致程序不当产生core的情况,今天我花了时间看了一些关于linux信号处理的博客. 总结一下:(知识未经实践) linux信号分两种,一种实时信号(也叫可靠信号),一种非实时信号(也叫不可靠信号). 实时信号之所以是可靠的,因为在进程阻塞该信号的时间内,发给该进程的所有实时信号会排队,而非实时信号则会合并为一个信号.(可以这样理解,同一个不可靠信号同时产生时,只有一个信号会被处理,其它的丢弃) 早期设计的信号都是不可靠的,我们常见的SI…
摘要:Linux远程可不像Windows下那么方便,主要是连接的速度.显示的画质不能令人满意(延迟.撕裂).本文只是说一下我用过的四款远程工具.Anydesk官网:https://anydesk.com/优点:官网很舒服,软件设计也不错,连接速度飞快.支持全平台(包括移动端).缺点:画面容易撕裂.延迟大时不能及时响应,移动端远程画面偶尔不会更新甚至不能连接.Anydesk软件界面Android端虽然写在第一位,但是并不代表最好,用不用你们看着办.可以传输声音,不过我用不上.Noma Linux…
解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐<高级unix环境编程>,黑话叫APUE还有<unix网络编程>这时候…
一.信号及信号来源 信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达. 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了.信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息. 信号来源 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它…
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断.从它的命名可以看出,它的实质和使用很象中断.所以,信号可以说是进程控制的一部分. 一.信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件.基本概念对于理解和使用信号,对于理解信号机制都特别重要.下面就来看看什么是信号. 1.基本…
01. 学习目标 了解信号中的基本概念 熟练使用信号相关的函数 了解内核中的阻塞信号集和未决信号集作用 熟悉信号集操作相关函数 熟练使用信号捕捉函数signal 熟练使用信号捕捉函数sigaction 熟练掌握使用信号完成子进程的回收 02. 信号概述 信号的概念 信号是 Linux 进程间通信的最古老的方式.信号是软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 .信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件. "中断"在我…
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz 安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar…
程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i486 → Pentium → PentiumPro → Pentium II → Pentium III → Pentium 4 → Pentium 4E → Core 2 → Core i7 机器级代码 两种抽象极为重要: 1.机器级程序的格式和行为 指令集体系结构(ISA),它定义了处理器状态.指…
第四章:进程调度 一.多任务 1.非抢占式多任务 进程会一直执行直到自己主动停止运行(这一步骤称为让步) 2.抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进程在被抢占之前能够运行的时间是预先设置好的(也就是进程的时间片) 二.与策略相关的概念 1.进程的消耗类型 I/O消耗型进程 进程的大部分时间用来提交I/O请求或者等待I/O请求 多数用户图形界面(GUI)都属于I/O密集型 处理器耗费型 时间大多数用在执行代码上 例如MATLAB 往往要延长运行时…
Linux内核分析 实践四——ELF文件格式分析 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: 可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创建一个可执行文件或者是一个共享目标文件.(目标文件或者静态库文件,即linux通常后缀为.a和.o的文件) 可执行文件:文件保存着一个用来执行的程序.(例如bash,gcc等) 共享目标文件:共享库.…
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉,在多处理器机器上,这会使多个进程在不同的处理机上真正同时.并行地运行. 无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处…
cron相关文件: /etc/cron.monthly/ /etc/cron.weekly/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.d/ /etc/crontab /etc/cron.deny /etc/cron.allow /var/spool/cron /var/log/cron 一.crond简介 当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务…
sigprocmask系统调用 使用条件: 1.有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数.这种情况是通过阻塞信号实现的. 2.信号阻塞和忽略信号的区别. 阻塞的概念和忽略信号是不同的.操作系统在信号被进程解除阻塞之前不会讲信号传递出去,被阻塞的信号也不会影响进程的行为,信号只是暂时被阻止传递.当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃. 3.信号阻塞系统调用,它们的都起到阻塞的作用,它们不是协作使用的. 功能…
第四章 进程调度 一.多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于可运行状态.多任务系统分类: 非抢占式多任务 抢占式多任务 1.抢占式多任务 Linux提供了抢占式的多任务模式,由调度程序来决定什么时候停止一个进程的运行.几个相关概念: 抢占:强制的挂起动作 时间片:预先设置好的,进程被抢占之前能够运行的时间,实际上就是分配给每个可运行进程的处理器时间段 动态时间片计算的方式…
作业一: 1) 开启Linux系统前添加一块大小为20G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 安装的是命令行界面 3) 为新加的硬盘分区,一个主分区大小为10G,剩余空间给扩展分区,在扩展分区上划分两个逻辑分区,大小各5G 4) 格式化主分区为ext3系统 5) 格式化两个逻辑分区为ext4系统 5) 将逻辑分区设置为交换分区 [root@bogon ~]# mkswap /dev/sdb3 6) 启用上一步的交换分区 [root@bogon ~]# swapon -a /dev/…
一.任务调度 任务调度:系统在某个时间执行特定的命令或者程序 如: 1.对于一些需要周期性执行的一些系统指令 2.定期的病毒扫描 3.定期数据库备份等   命令:crontab 设置任务调度文件: /etc/crontab 文件存在这边 设置个人任务调度.执行crontab –e命令. 接着输入任务到调度文件 如: */1 * * * * ls –l /etc/ > /tmp/to.txt 意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令 crond 相关指令:…
共享内存的优势 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝.对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据:一次从输入文件到共享内存区,另一次从共享内存区到输出文件.实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域.而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件.共享内存中的内容往往是在解除映射时才写…
本系列文章由@超人爱因斯坦出品,转载请注明出处.           文章链接:          http://hpw123.net/a/Linux/Linuxjichu/2014/1026/93.html          作者:超人爱因斯坦   个人站点:http://www.hpw123.net         邮箱:424346976@qq.com         CSDN:http://blog.csdn.net/u010283694 文本编辑器有非常多,比方图形模式的gedit.k…
四.软件包管理器: 1.概念 红帽有两款软件包管理器,分别是rpm和yum. 1.rpm软件包管理器  ->  用来安装单个包  ->  .rpm文件 红帽的安装包文件,都放在Packages文件夹里面,相当于windows的exe可执行文件. 2.yum软件包管理器  ->  用来安装软件,实现了安装包的批量安装,解决了安装包之间的依赖性关系的问题. rpm包,类似于Windows里面的exe文件,只不过,在Linux里面,一个软件通常需要由多个rpm才能安装好,而rpm包之间存在安装…
关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些控制. 二者函数调用唯一的实际区别是soceket函数调用的一个参数,TCP的是SOCK_STREAM,UDP的是SOCK_DGRAM,二者都可以使用recvfrom函数,而recv只用于TCP. 当然函数的变化不是这么简单,因为你要从一种有连接的协议转向到无连接的协议上去.这里写个很简单直接的UD…
1.linux多用户.多任务操作系统 cat /etc/passwd   //查看当前系统用户信息 cat /etc/group    //查看当前系统组别信息 2.rbac:基于角色进行权限分配 用户----------组-----------权限设置 3.出现以上情况,(每个用户有一个组),因为没有指定这个用户所属的组别 Man_useradd把useradd的帮助文档手册 4.用户操作 5.组操作 6.给用户设置密码,让其登录系统 修改密码与设置密码操作一致…
信号号称所谓软中断,事实上,还是没有真正的硬件中断那样能随时改变cpu的执行流 硬件中断之所以能一发生就得到处理是因为处理器在每个指令周期的结尾都会去检查中断,这种粒度是很细的 但是信号的实现只是在进程的task_struct里面有一个成员用于标识当前收到了哪些信号? 而这个成员的检查显然只能在特定时间点:从内核模式返回到用户模式的时候 可以想象,当进程从一个硬件中断中返回.从系统调用中返回或者正在休眠或者刚刚得到了调度,都是从内核态返回用户态的时机 这时候就会检查pending signals…
给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取.这些信息包括子进程的进程ID.终止状态以及资源利用信息(CPU时间,内存使用量等等).如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程).继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态). 但通常情况下,我们是不愿意留存僵尸进程的,它们占用内核中的空间,最终可能导致我们耗尽进程资源.那么为什么会产生僵尸进程以及如何避免产生僵尸…
前言:     最近有个项目, 需要访问第三方服务. 该服务是通过http的形式访问的, 为了安全和加密, 对方提供了一个加密用的C/C++库, 用于对参数进行处理.  鉴于此, 选用了C/C++语言, 以libcurl作为http类库来编写该服务模块. 这为后续的坑埋下了伏笔. 状况简述: 程序采用Reactor模型, IO线程专做IO事件读写, 以及请求的dispatch分发, 后端线程池用于业务的同步操作. 对libcurl的使用, 也穿插在多线程中. 当程序功能完成后, 对其进行压力测试…
---恢复内容开始--- 1.常用的命令: reset 清屏 leave +hhmm 建立离开提醒 sudo apt-get yum 安装yum程序 sudo su 切换root身份 see test.c 可以直接查看文件,神奇 fmt  file.txt 格式化文件 zip distination.zip source 压缩文件 zip -r distination.zip source_fold 压缩文件夹 mkdir 创建文件夹 touch 创建文件 gzip source_file 压缩…
引言 先看以下两个信号量: 13)SIGPIPE     当管道读端关闭,再往管道写东西,会发出SIGPIPE信号 17)SIGCHLD   子进程退出会向父进程发出SIGCHLD信号,系统默认处理是忽略掉该信号 代码 /************************************************************************* > File Name: my_fork.c > Author: KrisChou > Mail:zhoujx0219@1…
函数原型 NAME signal - ANSI C signal handling SYNOPSIS #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal函数具有注册功能,什么事都不干.只是告诉系统,当来信号signum时,按handler的方式处理.只有来信号时,才会调用这个函数.信号不来,永远不会调用这个函数.…