linux信号基本概念及如何产生信号 摘自:https://blog.csdn.net/summy_j/article/details/73199069 2017年06月14日 09:34:21 阅读数:4131 标签: linux信号 更多 个人分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/summy_J/article/details/73199069 阅前须知 本文的主要内容有: 1.信号的基本概念(包括进程对信号的3…
信号及信号来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达. 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了.信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息. 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障):软件来源,最…
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 信号与进程几乎控制了操作系统的每个任务. 在shell中输入ps -ef命令,我们将得到如下结果: (译者注:-e Select all processes. Identical to -A: -f Do full-format listing. This option can be combined with many other UNIX-style…
进程 主要参考: http://www.bogotobogo.com/Linux/linux_process_and_signals.php 译者:李秋豪 信号与进程几乎控制了操作系统的每个任务. 在shell中输入ps -ef命令,我们将得到如下结果: (译者注:-e Select all processes. Identical to -A: -f Do full-format listing. This option can be combined with many other UNIX…
这篇将一口气学完信号的基本概念,但是有很多的细节,所以篇幅较长,请做好心理准备. (他大爷的,一口气没有学完,太懒了) 有以下主题: 各种不同信号及其用途 内核可能为进程产生信号的环境,以及某一进程向另一进程发送信号所使用的系统调用. 进程在默认情况下对信号的响应方式,以及进程改变对信号响应方式的手段,特别是借助于信号处理器程序的手段,即程序收到信号时自动去调用的函数,由程序员定义. 使用进程信号掩码来阻塞信号,以及等待信号的相关概念. 如何暂停进程的执行,并等待信号的到达. 起始信号的概念还是…
1基本概念 中断 q  中断是系统对于异步事件的响应 q  中断信号 q  中断源 q  现场信息 q  中断处理程序 q  中断向量表 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序 生活中的中断和计算机系统中的中断 1)  无中断生活场景 张三看书,厨房烧水 2)有中断的生活场景 张三看书,设置闹钟,厨房烧水. 闹钟发出中断信号,张三把书合好(第20页),去厨房把开水事情处理好,张三重新打开20页进行阅读. 3)计算机系统的中断场景 中断源发出中断信号,CPU判断…
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> void catch_signal(int signo, siginfo_t *info…
1. 信号的基本概念 为了理解信号,先从我们最熟悉的场景说起: 用户输入命令,在Shell下启动一个前台进程. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断. 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程). 当某个时刻要从内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的信号,发现有一个S…
Linux下多任务间通信和同步-信号 嵌入式开发交流群280352802,欢迎加入! 1.概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件.它可以在任何时候发给某一进程,而无需知道该进程的状态.如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程.信号是进程…
在阅读APUE信号一章时,我遇到Linux下对后台进程通过kill传递信号不起作用的问题 具体情形与如下链接中的老兄一致: http://bbs.csdn.net/topics/390335913?page=1#post-395188120 编译执行下面的信号程序,然后再shell命令行:先让程序在后台运行,得到进程ID,然后用kill向该进程发送信号:kill -USR1 ID,但是没有结果 #include "apue.h" static void sig_usr(int); in…
进程对信号的响应 进程可以通过三种方式来响应一个信号: 1.忽略信号,即对信号不做任何处理,其中,有两个信号不能忽略:SIGKILL及SIGSTOP: 2.捕捉信号.定义信号处理函数,当信号发生时,执行相应的处理函数: 3.执行缺省操作,Linux对每种信号都规定了默认操作.注意,进程对实时信号的缺省反应是进程终止. Linux究竟采用上述三种方式的哪一个来响应信号,取决于传递给相应API函数的参数. 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号.由于信号处理函…
转自:http://blog.chinaunix.net/uid-24774106-id-4084864.html 上一篇博文提到了,如果同时有多个不同的信号处于挂起状态,kernel如何选择deliver那个信号.          next_signal 负责从挂起信号中选择deliver的signo:当然,有线程显存私有的penging,有线程组共有的pending,对于线程而言,先从自己私有的pending中选,处理完毕私有的才会去处理线程组共有的pending,这个逻辑的代码在: in…
http://www.cnblogs.com/charlesblc/p/6277848.html 注意,sleep是会被信号唤醒的.   sleep函数:#include <unistd.h>unsigned int sleep(unsigned int seconds);此函数使调用进程被挂起,直到满足以下条件之一:1)已经过了seconds所指定的墙上时钟时间2)调用进程捕捉到一个信号并从信号处理程序返回注:由于其他系统活动,实际返回时间比所要求的会迟一些,像alarm一样.sleep的返…
根据网上文章整理. 负载均衡软件LVS(Linux Virtual Server)概念篇 lvs是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡.它是基于linux内核实现的.2.6.X内核默认集成了lvs模块. lvs常用负载均衡的实现是基于ip协议的,所以一般称为ipvs. IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能.当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它.此后通过查发报文的IP和TCP报文头地址,保证…
一个事件可以事一个信号发送给一个进程,这个事件可以是硬件异常,可以是软件条件触发,可以是终端产生信号,也可以是一个kill函数调用.当信号产生后,内核通常会在进程表中设置某种形式的标志(flag).我们可以认为当进程中的信号处理函数被触发的时候认为信号下达到了(delivered)这个进程.从信号产生到信号下达到进程这段期间,信号被认为是挂起状态(pending).进程拥有阻塞信号下达的选项.如果一个阻塞信号要发送给一个进程,而且信号的处理方式是默认处理或者被进程捕获,那么这个信号将一直处于挂起…
Linux(二)-- Unix&Linux 的基本概念 计算机 = 主机(host)+ 终端(terminal) 主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程.引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel) 内核的作用是控制计算机,提供基础服务,是操作系统的核心,主要分为单内核和微内核两种 单内核(monolithic kernel):自身可以完成所有事情,大多数早期 Unix 使用单内核设…
#linux的防火墙概念#因为如果你不关防火墙,很可能运行 django.nginx.mysql出错#防火墙可能会阻挡端口流量的 出口#也会阻挡外来请求的 入口 #selinux iptables firewalld 1.关闭selinux 1.获取selinux状态 getenforce 2.临时关闭selinux,重启后又会生效 setenforce 0 3.永久关闭selinux,写入到selinux配置文件 vim /etc/selinux/config SELINUX=disabled…
注意,sleep是会被信号唤醒的.   sleep函数:#include <unistd.h>unsigned int sleep(unsigned int seconds);此函数使调用进程被挂起,直到满足以下条件之一:1)已经过了seconds所指定的墙上时钟时间2)调用进程捕捉到一个信号并从信号处理程序返回注:由于其他系统活动,实际返回时间比所要求的会迟一些,像alarm一样.sleep的返回值:1)在上述第一种情形中,返回值是02)当由于捕捉到某个信号sleep提前返回时,返回值是未睡…
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 集群的概念: 集群的特性: Nginx的反向代理 # 反向代理 # 通过访问Nginx的web服务,由Nginx 对 '有效的请求' 进行一个请求转发,请求到真正的web服务后台数据.返回给用户. # 正向代理 # vpn . 访问外国的网站,需要把你的请求进行伪装/代理进行转发 ### 如下图~~…
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息. 而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态)的进程. 任何一个子进程(init除外)在exit后并非马上就消失,而是留…
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些 信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息. 而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态)的进程. 任何一个子进程(init除外)在exit后并非马上就消失,而是…
之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时候,突然感觉对一些信号,非常相似,乃至非常容易混淆.今天周末就抽空总结一下. 一.关闭进程信号 常见的4中关闭进程信号是SIGKILL,SIGINT,SIGTERM,SIGQUIT. SIGKILL,就是为了关闭进程用的,无法捕获以及忽略.场景是,管理员把一些占用资源的进程或者无法掌控的孤儿进程杀死. SIGINT,interrupt(中断)进程,这个是可以捕获以及忽略.可以使用ctrl+c发出信号,直接发给父进程以及子进程,这样的话就…
    一些IO系统调用执行时, 如 read 等待输入期间, 如果收到一个信号,系统将中断read, 转而执行信号处理函数. 当信号处理返回后, 系统遇到了一个问题: 是重新开始这个系统调用, 还是让系统调用失败?早期UNIX系统的做法是, 中断系统调用, 并让系统调用失败, 比如read返回 -1, 同时设置 errno 为 EINTR中断了的系统调用是没有完成的调用, 它的失败是临时性的, 如果再次调用则可能成功, 这并不是真正的失败, 所以要对这种情况进行处理, 典型的方式为: ) {…
转自:http://www.cnblogs.com/wuchanming/p/4020463.html 什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息. 而僵尸进程就是指:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或wa…
本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核. 下面记录几个常用 option . -f -F选项告诉strace同时跟踪fork和vfork出来的进程 -o xxx.txt 输出到某个文件. -e e…
在调试cs时,s端循环收,c端循环发,s端意外崩溃后,c端自动退出,终端提示SIGPIPE导致c端退出.man 7 signal: SIGPIPE Term Broken pipe: write to pipe with no readers SIGPIPE发生在:写一个没有读的管道,默认动作是终止程序.man 2 write: EPIPE fd is connected to a pipe or socket whose reading end is closed. When this hap…
Linux进程概念 一.实验介绍1.1 实验内容Linux 中也难免遇到某个程序无响应的情况,可以通过一些命令来帮助我们让系统能够更流畅的运行. 而在此之前,我们需要对进程的基础知识有一定的了解,才能更好.更有效率的使用Linux 提供的工具. 1.2实验知识点 进程与程序 进程的衍生 工作管理 二.概念的理解 首先程序与进程是什么?程序与进程又有什么区别? 程序(procedure):不太精确地说,程序就是执行一系列有逻辑.有顺序结构的指令,帮我们达成某个结果.就如我们去餐馆,给服务员说我要牛…
线程 我们知道 ,进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,本节我们学习如何在一个进程的地址空间中执行多个线程.有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比如实现一个图形界面的下载软件, 一方面需要和用户交互,等待和处理用户的鼠标键盘事件,另一方面又需要同时下载多个文件, 等待和处理从多个 网络主机发来的数据,这些任务都需要一个"等待-处理"的循环,可以用多线程实现,一个线程专门 负责与用户交互,另外几个线程每个线程负…
>>进程 说进程,感觉好空洞,来一张图,Linux下的进程: ps -eo pid,comm,cmd 说明:-e表示列出全部进程,-o pid,comm,cmd表示我们需要PID,COMMAND,CMD信息 下面:我们好好说说,Linux下的进程的含义: 1>.程序的一个执行实例 2>.正在执行的程序. 3>.能分配处理器并由处理器执行的实体. 4>.内核观点:担当分配系统资源(CPU时间,内存)的实体. 进程的两个基本元素: 程序代码(可能被执行相同程序的其他进程共享…
转自:http://www.cnblogs.com/openix/p/3324243.html 参考:1.http://bbs.eyeler.com/thread-69-1-1.html                                                                                    2.<Linxu Kernel Development>3ed_CN p166~p185         3.<Professional…