今天继续学习系统编程,学习的主题还是进程,今天主要讨论的是守护进程相关的概念,开始进入正题: 什么是守护进程:       守护进程的创建步骤: 在描述它之前,首先得先了解两个概念:进程组.会话期:   而它里面有bash shell进程组,里面只有bash进程:   这时,当我们在shell命令行中敲入如下命令: 这时,会话期中又会多出一个进程组,如下: 而一个会话期,实际上就对应一个终端,当我们打开多个虚拟终端时,可以用tty来查看终端数: 而守护进程是跟控制终端无关的,并且是在后台执行的,…
目录 信号的介绍 信号的机制 信号的编号 Linux常规信号一览表 信号的产生 终端按键产生信号 硬件异常产生信号 kill函数/命令产生信号 信号的操作函数 信号集设定 sigprocmask函数 sigpending函数 信号的捕捉 signal函数 sigaction函数 内核实现信号捕捉的过程 信号的传参 捕捉函数传参 信号的机制 ​ A给B发送信号,B收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行.与硬件中断类似--异步模…
一,信号集及相关操作函数 信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]: } sigset_t 信号集用来描述信号的集合,每个信号占用一位(64位).Linux所支持的所有信号可以全部或部分的出现在信号集中,主要与信号阻塞相关函数配合使用.下面是为信号集操作定义的相关函数: #include <signal.h> int sigemptyset(sigset_t *set): int sigfillset(sigs…
今天继续学习信号,主要是学习关于时间和定时器相关的函数的使用,关于这个实际上有很多内容,这里先简要进行说明,等之后再慢慢进行相关深入,也主要是为接下来要做的一个综合linux系统编程的例子做准备,好了,进入正题: 三种不同精度的睡眠: 关于这个函数,实际上已经在之前使用过了,具体可以参考博文:http://www.cnblogs.com/webor2006/p/3525517.html 查看man帮助:   以微秒为单位,那微秒跟秒是什么关系呢? 1秒=10的3次方毫秒=10的6次方微妙 以纳秒…
信号的概念 man 7 siganl  查看man手册 信号在我们的生活中随处可见, 如:古代战争中摔杯为号:现代战争中的信号弹:体育比赛中使用的信号枪......他们都有共性:1. 简单 2. 不能携带大量信息 3. 满足某个特设条件才发送. 信号是信息的载体,Linux/UNIX 环境下,古老.经典的通信方式, 现下依然是主要的通信手段. Unix早期版本就提供了信号机制,但不可靠,信号可能丢失.Berkeley 和 AT&T都对信号模型做了更改,增加了可靠信号机制.但彼此不兼容.POSIX…
Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号 背景 上一讲我们介绍了Unix IPC中的2种管道. 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) System V IPC:消息队列.信号量.共享内存 Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍Unix IPC,中有关信号(Signal)的处理. 信号(Signal) Signal :进程给操作系统或进程的某种信息,…
实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending).进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作.信号在内核中的表示可以看作是这样的:…
今天继续探讨信号相关的东东,话不多说,正入正题: 信号在内核中的表示: 下面用图来进一步描述这种信号从产生到递达之间的状态(信号阻塞与未诀):   那是怎么来决定的呢?下面慢慢来举例分解: 所以,通过这些图,可以描述信号从产生到递达的一个过程,上面的理解起来可能有点难,下面会用代码来进一步阐述,在进行实验之前,还需了解一些函数的使用,这些函数在实验中都会被用到,也就是信号集操作函数. 信号集操作函数: 其中解释一下sigset_t,百度百科解释为: 而这个函数的意义就是将这64位清0 这个函数的…
上一节中已经学习了文件描述符的复制,复制方法有三种,其中最后一种fcntl还并未使用到,关于这个函数,不光只有复制文件描述符的功能,还有其它一些用法,本节就对其进行一一剖析: fcntl常用操作: 这里,我们将上节当中用dup或dup2实现复制文件描述符改用fcntl,程序如下: 先将test2.txt的内容清空,以便进行测试,编译运行: 通过man来查看下它的说明: [说明:关于这一的操作命令,等之后学到进程时再来学习,先这边记录一下] 上一节也有介绍过,先回顾一下都有哪些状态标志: 也就是说…
进程间通信概述 需要进程通信的原因: 数据传输 资源共享 通知事件 进程控制 Linux进程间通信(IPC)发展由来 Unix进程间通信 基于System V进程间通信(System V:UNIX系统的一个分支) POSIX进程间通信(POSIX:可移植操作系统接口,为了提高UNIX环境下应用程序的可移植性.很多其他系统也支持POSIX标准(如:DEC OpenVMS和Windows).) 现在Linux使用的进程间通信方式包括: 共享文件 管道(pipe).命名管道(FIFO):只能传输无格式…