文件和目录详解(二)---与进程有关的ID详解

操作系统会为每个进程分配一个唯一的ID号码。它用于标识该用户对系统资源和文件拥有哪些权限。EUID通常等于当前运行程序所属用户账户对应的UID值,并且所有由此启动的子进程都将继承该SID号码。

在计算机系统中,每个运行的程序都是一个进程。为了区分不同的进程,操作系统会为每个进程分配一个唯一的ID号码。这些ID号码被称为PID(Process ID)。PID是与进程相关联的重要标识符之一。

除了PID之外,还有其他类型的ID号码与进程相关联。在本文中,我们将深入研究这些ID号码及其作用。

1. UID

UID是用户标识符(User ID)的缩写。每个用户都有一个唯一的UID号码,它用于标识该用户对系统资源和文件拥有哪些权限。当一个新文件或目录被创建时,它会继承创建者的UID号码。

2. EUID

EUID是有效用户标识符(Effective User ID)的缩写。EUID通常等于当前运行程序所属用户账户对应的UID值,在Linux中可以使用命令“id”查看当前用户信息以及EUID值。

当程序需要执行某些特定操作时,可能需要提升自己拥有资源或权限等级来执行该操作。此时可以使用setuid()函数来更改EUID值,并获得更高级别权限进行操作。

3. GID

GID是组标识符(Group ID) 的缩写。类似于UID,每个组也有一个唯一的GID号码,它用于标识该组对系统资源和文件拥有哪些权限。当一个新文件或目录被创建时,它会继承创建者所属组的GID号码。

4. EGID

EGID是有效组标识符(Effective Group ID)的缩写。EGID通常等于当前运行程序所属用户账户对应的GID值,在Linux中可以使用命令“id”查看当前用户信息以及EGID值。

文件和目录详解(二)---与进程有关的ID详解

与EUID类似,程序可以通过setgid()函数来更改自己的EGID值,并获得更高级别权限进行操作。

5. PPID

PPID是父进程标识符(Parent Process ID) 的缩写。在Linux系统中,每个进程都有一个父进程,除了init进程外所有进程都有父进程。PPID就是指向该父进程的PID号码。

6. SID

SID是会话标识符(Session ID) 的缩写。在Unix/Linux系统中,每个登录会话都将分配一个唯一的SID号码,并且所有由此启动的子进程都将继承该SID号码。

7. TTY

TTY是终端类型(TeleTYpewriter) 的缩写。在Unix/Linux系统中,TTY表示“控制台”,即用户界面输入输出设备所关联到的设备文件名或设备节点编号,在Windows环境下则称为CON。

每个进程都与一个TTY相关联。当进程需要向终端输出数据时,它会将数据发送到与其关联的TTY设备。而当用户从终端输入命令时,这些命令则会被发送到当前活动的TTY设备。

总结

本文详细介绍了与进程有关的各种ID号码及其作用。理解这些ID号码对于编写高效、安全、可靠的程序非常重要。在实际开发过程中,应该充分利用这些ID号码,并遵循最佳实践来确保程序的稳定性和安全性。