pid ppid uid euid gid egid

pid --- 进程号

ppid --- 父进程号

uid --- 用户id, 也就是该进程的所有者id
euid --- 有效用户id,

uid为文件的执行者,而euid为文件的所有者,ps命令中看到的用户为文件的所有者。

1. 用户空间获取pid, uid, euid,gid方法:

示例代码如下:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #include <stdio.h>  

  2. #include <unistd.h>  

  3.   

  4. int main (int argc, char **argv)  

  5. {  

  6.         pid_t pid;  

  7.         pid = getpid();  

  8.   

  9.         pid_t ppid;  

  10.         ppid = getppid();  

  11.   

  12.         fprintf(stdout, "pid = %d, ppid = %d\n", pid, ppid);  

  13.   

  14.         uid_t uid, euid;  

  15.         gid_t gid, egid;  

  16.   

  17.         current->pid;  

  18.   

  19.   

  20.         uid = getuid();   

  21.         euid = geteuid();   

  22.         gid = getgid();   

  23.         egid = getegid();   

  24.   

  25.         fprintf(stdout, "uid = %d, euid = %d\n", uid, euid);   

  26.         fprintf(stdout, "gid = %d, egid = %d\n", gid, egid);   

  27.         sleep(500);   

  28.         return 0;  

  29. }  

2. 内核空间驱动程序中, 可以使用如下函数获得uid, euid, gid, egid, pid, ppid.

获得当前进程的uid:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片

  1. current_uid()  

获得当前进程的euid:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片

  1. current_euid()  

获取当前进程的父进程pid:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片

  1. current->pid;  

获得当前进程的命令名:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片

  1. current->comm;  

都包含在头文件linux/sched.h 中。

以前老的版本中,task_struct 结构体终究包含uid, 和 euid, 新版本中,已经移除了。


原帖地址:http://blog.csdn.net/lamdoc/article/details/8587586


转载于:https://my.oschina.net/u/2284950/blog/353424

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值