pid --- 进程号
ppid --- 父进程号
uid --- 用户id, 也就是该进程的所有者id
euid --- 有效用户id,
uid为文件的执行者,而euid为文件的所有者,ps命令中看到的用户为文件的所有者。
1. 用户空间获取pid, uid, euid,gid方法:
示例代码如下:
#include <stdio.h>
#include <unistd.h>
int main (int argc, char **argv)
{
pid_t pid;
pid = getpid();
pid_t ppid;
ppid = getppid();
fprintf(stdout, "pid = %d, ppid = %d\n", pid, ppid);
uid_t uid, euid;
gid_t gid, egid;
current->pid;
uid = getuid();
euid = geteuid();
gid = getgid();
egid = getegid();
fprintf(stdout, "uid = %d, euid = %d\n", uid, euid);
fprintf(stdout, "gid = %d, egid = %d\n", gid, egid);
sleep(500);
return 0;
}
2. 内核空间驱动程序中, 可以使用如下函数获得uid, euid, gid, egid, pid, ppid.
获得当前进程的uid:
current_uid()获得当前进程的euid:current_euid()
获取当前进程的父进程pid:
current->pid;获得当前进程的命令名:current->comm;都包含在头文件linux/sched.h 中。
以前老的版本中,task_struct 结构体终究包含uid, 和 euid, 新版本中,已经移除了。
本文详细介绍了如何在Linux环境下通过C语言获取进程的PID、PPID、UID、EUID、GID、EGID的方法,包括用户空间和内核空间的操作方式。
7714

被折叠的 条评论
为什么被折叠?



