pid --- 进程号
ppid --- 父进程号
uid --- 用户id, 也就是该进程的所有者id
euid --- 有效用户id,
uid为文件的执行者,而euid为文件的所有者,ps命令中看到的用户为文件的所有者。
1. 用户空间获取pid, uid, euid,gid方法:
示例代码如下:
[cpp] view plaincopy
#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:
[cpp] view plaincopy
current_uid()
获得当前进程的euid:
[cpp] view plaincopy
current_euid()
获取当前进程的父进程pid:
[cpp] view plaincopy
current->pid;
获得当前进程的命令名:
[cpp] view plaincopy
current->comm;
都包含在头文件linux/sched.h 中。
以前老的版本中,task_struct 结构体终究包含uid, 和 euid, 新版本中,已经移除了。
原帖地址:http://blog.csdn.net/lamdoc/article/details/8587586