++++++APUE读书笔记-08进程控制(01)++++++
1、简介
================================================
本章我们将讲述UNIX系统提供的进程控制相关的内容。包括新进程的创建,程序的执行,以及进程的终止。我们也会看到进程属性相关的各种ID:真实(real user)用户/组ID,有效(effective user)用户/组ID,保存(saved)用户/组ID,以及进程的基本控制(控制原语)如何影响它们。本章也谈到了解释器文件以及system函数。最后我们通过讲述大多UNIX系统提供的进程记账机制结束本章,这也使得我们从一个不同的角度来看待进程控制函数。
参考:
2、进程标识
================================================
每一个进程用非负数字来唯一标识(即pid),由于进程pid具有唯一性,所以也常用做其他需要确保唯一性的标识的一部分。例如一些特殊的文件名称中就含有进程pid。
尽管进程pid是唯一的,但是它可以在进程结束之后再度被重新利用。大多数系统会在进程结束之后延迟其pid的重复利用,防止随后的进程很快采用先前结束进程的pid,导致一些错误。
另外有一些特殊的进程:pid为0的进程是调度进程(swapper),磁盘中没有这个进程对应的可执行文件,因为它是内核的一部分,作为系统进程;pid为1的进程一般就是init程序,它在内核加载的最后阶段被调用,其对应的可执行文件在早期的版本中是/etc/init,后来的版本中是/sbin/init,这个进程用来在系统内核启动之后运行一些操作系统必须的脚本,它会读取一些例如/etc/rc*或者/etc/inittab,/etc/init.d/*系统无关的脚本,然后系统将进入特定状态,例如多用户状态等。init进程不会死掉,它是一个一般用户进程,不像swapper那样是内核里面的系统进程,init用supersuser的权限运行,后面会提到init也是所有孤儿进程的父亲进程。
每个系统的实现也有一些自己的核心进程集合,用来提供一些服务。例如在一些unix系统中pid为2的进程是 pagedaemon,支持虚拟内存系统的页机制。
除了PID,还有进程还有其他的标识属性,如下是获取这些属性的相关函数:
#include
pid_t getpid(void);
返回:调用进程的PID.
pid_t getppid(void);
返回:调用进程的父进程PID.
uid_t getuid(void);
返回:调用进程的真实用户ID。
uid_t geteuid(void);
返回:调用进程的有效用户ID.
gid_t getgid(void);
返回:调用进程的真实ID组。
gid_t getegid(void);
返回:调用进程的有效ID组。
注意:这些函数都不会返回错误。
参考:
阅读(467) | 评论(0) | 转发(0) |