你的位置:首页 > 软件开发 > 操作系统 > 关于getpw系列函数返回的静态区域

关于getpw系列函数返回的静态区域

发布时间:2015-04-11 20:00:16
首先说一下什么是getpw系列函数,它主要是指这些函数:    这些函数根据一个用户名(getpwnam和getpwnam_r两个函数)或者一个用户ID(getpwuid和getpwuid_r)来获取这个用户在/etc/passwd中相应的条目信息,并把这些信息存放在一个stru ...

关于getpw系列函数返回的静态区域

  首先说一下什么是getpw系列函数,它主要是指这些函数:

  关于getpw系列函数返回的静态区域

  这些函数根据一个用户名(getpwnam和getpwnam_r两个函数)或者一个用户ID(getpwuid和getpwuid_r)来获取这个用户在/etc/passwd中相应的条目信息,并把这些信息存放在一个struct passwd的结构体里面,然后再把这个结构体的指针返回。问题就出在这个存储用户信息的结构体上面,它是由getpw函数在程序中自定义的一块静态存储区,而且每调用一次getpw函数,这个静态存储区就会被重写一次。比如下面这段代码:

 1 #include<errno.h> 2 #include<pwd.h> 3 #include<string.h> 4 #include<stdlib.h> 5 #include<stdarg.h> 6 #include<stdio.h> 7 #include<sys/types.h> 8  9 #define BUFSIZE 51210 11 void err_exit(char *fmt,...);12 13 int main(int argc,char *argv[])14 {15   16   struct passwd *mistr;17   struct passwd *rootstr;18 19   if(NULL == (mistr=getpwnam("michael")))20   err_exit("[getpwnam]<mi>:");21   if(NULL == (rootstr=getpwnam("root")))22   err_exit("[getpwnam]<root>:");23 24   printf("name = %s\n",mistr->pw_name);25   printf("name = %s\n",rootstr->pw_name);26 27   return 0;28 }

原标题:关于getpw系列函数返回的静态区域

关键词:get

get
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录