重新载入函数(Reentrant Functions)
当一个信号被捕获后,被一个进程处理,该进程的正常指令队列被信号处理函数临时中断。进程会继续处理,不过执行的是信号处理函数的指令。如果信号处理函数返回(不是调用e…
当一个信号被捕获后,被一个进程处理,该进程的正常指令队列被信号处理函数临时中断。进程会继续处理,不过执行的是信号处理函数的指令。如果信号处理函数返回(不是调用e…
早期UNIX系统的一个特性是如果进程被一个“慢”系统调用阻塞的同时捕获了一个信号(这个系统调用已经被中断)。系统调用返回一个错误并且设置errno的…
在早期的UNIX系统版本中信号曾是不可靠的。它的意思是信号可能丢失:一个信号发生后进程可能永远不会知道它曾发生过。同样,进程也可以控制信号:进程可以捕获信号或忽…
要使用UNIX系统中信号这一功能最简单的方法是使用signal函数: #include <signal.h> void (*signal(int s…
首先,每个信号都有一个名字。名字都以SIG开头。这些名字都由常量正整数定义在<signal.h>头文件中。(实际上一些实现都有自己独立的头文件,但是…
已经说了多种进程、进程组、会话和控制终端的属性。现在是看一下这些是如何实现的。我们简单浏览一下FreeBSD是如何实现的。 让我们看一下标记的字段,从sessi…
之前我们说过如果一个进程的父进程终止了,那么它会“孤立”并且由init进程继承管理。现在我们看一下所有能被“孤立”的进程组,还有POSIX.1如何处理这种状态。…
让我们看一下shell如何执行程序,并且了解一下它和进程组的概念、控制终端和会话之间的关系。要了解这些我们就要使用ps命令。 首先, 在不solaris上运行不…
任务控制这个功能允许我们从单独的终端里开始多个任务(进程组)并去控制这些任务访问终端并在后台返回任务的结果。任务控制需要三种支持形式: 一个支持任务控制的she…
需要一种方法告诉内核哪个进程组是前台进程组,以让终端 驱动设备得知向哪里发送终端输入和由终端产生的信号。 #include <unistd.h> p…