一:基本属性
1,进程号(PID):是系统维护的唯一标识一个进程的正整数,进程号无法在用户态修改;
获取函数:// come from /usr/include/unistd.h extern _pid_t getpid(void);返回PID
获取命令:ps aux
2,父进程号(PPID):任何进程(除了init进程)都是有另一个进程创建,该进程称为被创建进程的父进程,被创建进程称为子进程
获取函数:extern _pid_t getppid(void);返回PPID
3,进程组号(PGID):进程组是一个或多个进程的集合,他们与统一作业相关联,可以接受来自同一终端的各种信息,每个进程组有唯一的进程组号,进程组号可以在用户层修改。
获取函数:extern _pid_t getpgid(void);返回PGID
pid_t getpgrp(void);返回PGID
设置进程组ID函数:int setpgid(pid_t, pid_t pgid);
第一个参数为欲修改进程PGID的进程PID,第二个参数为新的进程组号PGID,
如果这两个参数相等,则由pid指定的进程变成进程组组长;
如果pid为0,则修改当前进程PGID;
如果pgid为0,则由pid指定的进程的PID将用于进程组号PGID。
二:用户属性
1,进程真实用户号(RUID):创建该进程的用户UID为该进程的真实用户号(RUID)或实际用户号
获取函数:extern _uid_t getuid(void);
2,进程有效用户号(EUID):EUID主要用于权限检测,多数情况下,RUID和EUID相同,如果可执行文件的setuid位有效,则该文件的创建者之外的用户运行该文件时,EUID和RUID不同,即有效用户号为该文件的拥有者。
获取函数:extern _uid_t geteuid(void);
3,进程用户组号(GID):创建该文件的进程拥有的进程组号为该文件的进程用户组号(GID),
获取函数:extern _uid_t getgid(void);
4,有效进程用户组号(EGID)
一般情况下,EGID和GID相同,但是,当某可执行文件设置了setgid位,那么任何用户运行此程序时,其有效用户号EGID为该文件的拥有者所在的组。
获取函数:extern _uid_t getegid(void);
以上函数都是系统调用函数,头文件是#include<unistd.h>
返回值为要获取的xx号,执行错误的话返回-1,错误号保存在errno中。