APUE读书笔记:进程控制】的更多相关文章

重点函数:fork,exit,_exit 一.fork 函数原型: #include <unistd.> pid_t fork(void) 函数说明:fork函数将创建一个子进程,该函数调用一次,但是有两次返回.子进程返回值为0,父进程的返回值是该子进程的进程ID. 小技巧:父进程能够拿到该次fork生成的子进程的ID,这是唯一的机会.而子进程不需要关心自己的进程ID.通过是否关心子进程id,就能明确地区分是父进程还是子进程. 相关的函数: 获取自己的进程ID:getpid() 获取父进程ID…
第13章 守护进程 13.1 引言 *守护进程也称精灵进程(daemon)是生存期较长的一种进程.它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNIX系统有很多守护进程,它们执行日常事务活动 13.2 守护进程的特征 *系统进程依赖于操作系统实现.父进程ID为0的各进程通常是内核进程,它们作为系统自举过程的一部分而启动.(init是此种进程的例外,它是内核在自举时启动的用户层命令.)内核进程是特殊的,通常存在于系统的整个生命期中.它们以超级用户…
18.1 引言 *终端I/O的用途很广泛,包括用于终端.计算机之间的直接连线.调制解调器以及打印机等等,所以终端I/O系统非常复杂 18.2 综述 *终端I/O有两种不同的工作模式: (1)规范模式输入处理(Canonical mode input processing) (2)非规范模式输入处理(Noncanonical mode input processing) 18.3 特殊输入字符 *CR \r 回车符.不能更改此字符.以规范模式进行输入时识别此字符.当设置了ICANON(规范模式)和…
函数fork 博文链接: 1. 代码示例: #include "apue.h" ; char buf[] = "a write to stdout\n"; int main(void) { int var; int pid; ; ) != ) { err_sys("write error!\n"); } printf("before fork!\n"); ) { err_sys("fork error!\n"…
17.1 引言 *两种高级IPC:基于STREAMS的管道(STREAMS-based pipe)以及UNIX域套接字(UNIX domain socket)可以在进程间传送打开文件描述符.服务进程可以使它们的打开文件描述符与指定的名字相关联,客户进程可以使用这些名字与服务进程通信 17.2 基于STREAMS的管道 *可以用fattach函数给STREAMS管道一个文件系统中的名字 *一旦STREAMS管道连接到文件系统名字空间,那么原来该名字的底层文件就不再可访问的.打开改名字的任一进程将能…
1.1 你必须知道的知识 (其中包括1.1.1 DIV + CSS的叫法解释:1.1.2 DIV + CSS 名字的误区:以及1.1.3 W3C简介.由于只是背景知识,跳过该章.) 1.2 你必须掌握的基础 1.2.1 CSS如何控制 使用 xHTML+CSS 布尿页面,其中有个很重要的特点就是结构与表现相分离,结极指 xHTML 页面代码,表现就是 CSS 代码了,如果把一个网页看成穿着衣服癿人癿话,人就是 xHTML,是结构,而衣服呢就是 CSS,是表现,现在出现的问题是,如何让 CSS 去…
14.1 引言 *高级I/O包括非阻塞I/O.记录锁.系统V流机制.I/O多路转换(select和poll函数).readv和writev函数以及存储映射I/O(mmap) 14.2 非阻塞I/O *非阻塞I/O使我们可以调用open.read和write这样的I/O操作,并使这些操作不会永远阻塞 14.3 记录锁 *记录锁(record locking)的功能是:当一个进程正在读或修改文件的某个部分时,它可以组织其他进程修改同一文件区 *考虑数据库访问例程库.如果该库中所以函数都以一致的方法处…
sigsuspend是一个原子操作,为了防止信号丢失而存在的,具体含义看下函数原型. int sigsuspend(const sigset_t *mask); 先忽略参数,sigsuspend完成的操作是阻塞进程的运行,直到有信号的产生.这样来看与另一个函数的作用相同.pause() 加上参数来理解,sigsuspend完成的操作是阻塞进程的运行,如果信号是mask参数设置的信号集,那么该信号是pending状态,而不会影响进程的阻塞状态,意思是进程仍然在阻塞中,直到不在信号集中的信号出现,进…
第三章 进程管理 总结 fork创造的子进程复制了父进程资源,包括内存及进程描述符的内容,资源的复制而不是指针的复制. vfork的行为更像一个线程(指没有自已独立的内存空间),更明显的是vfork的调用将挂起当前进程(即父进程). clone根据flag的不同可以实现不同的功能. 只要退出,最终都调用了do_exit. 3.1 进程 进程:是处于执行期的程序以及它所包含的资源的总称. 线程:是在进程中活动的对象. 每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线…