getpwnam函数学习
来源:互联网 发布:应用最广的编程语言 编辑:程序博客网 时间:2024/06/05 20:14
来个百度的复制粘贴
getpwnam
getpwnam() 函数功能:获取用户登录相关信息 原型定义: struct passwd *getpwnam(const char *name); 表头文件: #include <pwd.h> #include <sys/types.h> 信息存贮在如下的结构体之中 struct passwd { char * pw_name; /* Username. */ char * pw_passwd; /* Password. */ __uid_t -pw_uid; /* User ID. */ __gid_t -pw_gid; /* Group ID. */ char * pw_gecos; /* Real name. */ char * pw_dir; /* Home directory. -*/ char * pw_shell; /* Shell program. */ }; 例子:
- #include <stdio.h>
- #include <pwd.h>
- int main()
- {
- struct passwd * pw;
- char *username = "devis";
- pw = getpwnam(username);
- if(!pw)
- {
- printf("%s is not exist\n", username);
- return -1;
- }
- printf("pw->pw_name = %s\n", pw->pw_name);
- printf("pw->pw_passwd = %s\n", pw->pw_passwd);
- printf("pw->pw_uid = %d\n", pw->pw_uid);
- printf("pw->pw_gid = %d\n", pw->pw_gid);
- printf("pw->pw_gecos = %s\n", pw->pw_gecos);
- printf("pw->pw_dir = %s\n", pw->pw_dir);
- printf("pw->pw_shell = %s\n", pw->pw_shell);
- return 0;
- }
运行的结果:
pw->pw_name = devis
pw->pw_passwd = x
pw->pw_uid = 500
pw->pw_gid = 500
pw->pw_gecos = devis
pw->pw_dir = /home/devis
pw->pw_shell = /bin/bash
pw->pw_passwd = x
pw->pw_uid = 500
pw->pw_gid = 500
pw->pw_gecos = devis
pw->pw_dir = /home/devis
pw->pw_shell = /bin/bash
下面是不可重入函数getpwnam的问题
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <signal.h>
- #include <pwd.h>
- void sig_handler(int signo);
- int main(int argc, char** argv)
- {
- int ret;
- struct passwd* ptr;
- signal(SIGALRM, sig_handler);
- alarm(1);
- for(; ;){
- ptr = getpwnam("xxxx");
- if(ptr == NULL){
- perror("getpwnam");
- exit(1);
- }
- if(strcmp(ptr->pw_name, "xxxx") != 0){
- printf("return value has corrupted by sig_handler, pw_name = %s\n", ptr->pw_name);
- }
- }
- exit(0);
- }
- void sig_handler(int signo)
- {
- struct passwd* root_ptr;
- printf("in sig_handler\n");
- root_ptr = getpwnam("root");
- if(root_ptr == NULL){
- perror("sig_usr getpwnam");
- exit(2);
- }
- printf("pw_name = %s\n", root_ptr->pw_name);
- alarm(1);
- }
getpwnam是不可重入函数。因此此程序运行的结果是不可预见的。
0 0
- getpwnam函数学习
- getpwnam函数学习
- getpwnam
- getpwnam
- getpwnam
- getpwnam
- 不可重入函数getpwnam的问题
- getpwnam,getgrnam,getpwent,crypt等函数
- 在信号处理函数中调用非可重入函数getpwnam
- 6_2:一种getpwnam函数的实现方式
- 10_5 在信号处理函数中调用非可重入函数getpwnam。
- 信号处理程序中调用不可重入函数getpwnam 起结果是不可预见的。
- C语言getpwnam()函数:从密码文件中取得指定账号的数据
- getpwnam() -- 获取用户属性
- [emerg]: getpwnam(“nginx”) failed
- getpwuid和getpwnam的用法
- getpwnam() function implementation on android
- nginx [emerg]: getpwnam(“www”) failed 处理办法
- 《海马记忆训练》
- Nutch搜索引擎__Nutch简介及安装
- win7 mysql 集群搭建,自测ok
- zabbix yum 安装
- SCM包括哪些关键活动?
- getpwnam函数学习
- Java 线程的创建
- 正则表达式,分组匹配示例
- 关于Mip Maps的一道选择题
- 每天读一遍,坚持27天,你的英语水平就能够到达跟美国人交换的水平啦!
- zabbix 源码安装
- AndroidStudio添加so文件
- 一道面试题引发的对android中context的研究(三)-各种Context在ActivityThread中实例化过程源码分析
- Java语言基础