Unix 进程管理与调度全解析
1. 获取用户和组 ID
在 Unix 系统中,可以通过系统调用来获取用户和组的 ID。以下是获取真实用户和组 ID 的系统调用:
#include <unistd.h> #include <sys/types.h> uid_t getuid (void); gid_t getgid (void);这两个系统调用不会失败。同样,获取有效用户和组 ID 的系统调用如下:
#include <unistd.h> #include <sys/types.h> uid_t geteuid (void); gid_t getegid (void);这两个系统调用也不会失败。
2. 会话和进程组
每个进程都是进程组的成员。进程组是一个或多个进程的集合,通常用于作业控制。进程组的主要特性是可以向组内的所有进程发送信号,一个操作就能终止、停止或继续同一进程组内的所有进程。
每个进程组由进程组 ID(pgid)标识,并且有一个进程组领导者。进程组 ID 等于进程组领导者的 pid。只要进程组还有一个成员,它就会一直存在,即使进程组领导者终止,进程组仍然存在。
当新用户登录机器时,登录进程会创建一个新会话,该会话包含单个进程,即用户的登录 shell。登录 shell 作为会话领导者,其 pid 用作会话 ID。会话是一个或多个进程组的集合,它安排已登录用户