找回密码
 注册
搜索

23.进程之三(用户和用户组信息)

已有 271 次阅读2014-2-8 21:33 |个人分类:Linux编程| 用户登录, 用户组, 进程, linux, 编程

(GNU_linux 编程指南-第二版-Page 200)

getlogin函数返回执行程序的用户登录名。一旦你拥有了登录名,就可以把它作为参数传递给getpwname函数,这个函数能够返回/ect/passwd文件中与该登录名相应的一行完整信息。另一种方法是把进程的UID传递给该getpwuid函数,这个函数也能返回/etc/passwd文件中恰当的条目。

getlogin的原型如下:

#include <unistd.h>

         char *getlogin(void);

         它返回一个指向字符串的指针,这个字符串包含有运行该进程的用户的登录名,如果没有得到这一点,则函数返回NULL。一旦你拥有了登录名,就可以调用getpwnam检索相应于用户名的UID。它的原型为

         #include<pwd.h>

         Struct passwd *getpwnam(const char *name);

         Name必须是一个指向包含有感兴趣的用户名的字符串指针。Getpwnam返回一个指向passwd结构的指针。返回的passwd结构指针指向静态分配的内存,下次调用getpwname之前应该保存好passwd结构中的信息。程序清单13.3中的程序用getlogingetpwnam显示出谁是正在运行的进程。

         程序清单 13.3 getname.c

         /*

*getname.c –Get login names

         */

         #include <stdio.h>

         #include <stdlib.h>

         #include <sys/types.h>

         #include <unistd.h>

         #include <pwd.h>

 

         int main(void)

         {

                  char *login;

                  struct  passwd  *pentry;

 

                  /*Get the login name*/

                  if ((login = getlogin()) == NULL){

                  perror(“getlogin”);

                  exit(EXIT_FAILURE);

                  }

 

                  /*Get the password entry for login*/

                  if((pentry = getpwnam(login)) == NULL){

                  perror(“getpwna”);

                  pxit(EXIT_FAILURE);

         }

 

         /*Display the password entry*/

         printf(“user name : %s \n”, pentry->pw_name);

         printf(“UID      : %s \n”, pentry->pw_uid);

         printf(“GID      : %s \n”, pentry->pw_gid);

         printf(“gecos      : %s \n”, pentry->pw_gecos);

         printf(“home dir   : %s \n”, pentry->pw_dir);

         Exit(EXIT_SUCCESS);

}

         聪明的读者会注意到程序中故意不让代码显示出口领域的内容。执行make getname 编译getname.该程序的输出应该和下面类似:

$ ./getname

User name: kwall

UID           : 500

GID           : 100 Wall

Gecos       :Kurt

Home dir  :/home/kwall


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-24 06:58 , Processed in 0.030513 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部