linux c 获取用户信息以及主机信息
/*gino2015/7/10 21:52:38*/#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <pwd.h>#include <sys/utsname.h>int main(){/*getlogin函数返回与当前用户关联的登录名。getuid函数返回程序关联的U
·
/*
gino
2015/7/10 21:52:38
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <sys/utsname.h>
int main(){
/*
getlogin函数返回与当前用户关联的登录名。
getuid函数返回程序关联的UID,它通常是启动程序的用户的UID。
*/
printf("Login user is %s\n",getlogin());
printf("uid=%d, gid=%d\n",getuid(),getgid());
/*
系统文件/etc/passwd包含一个用户帐号数据库。它由行组成,每行对应一个用户,包括:
用户名、加密口令、用户标识符(UID)、组标识符(GID)、全名、主目录和默认shell。
编程接口的数据结构:
strcut passwd {
char *pw_name;
char *pw_passwd;
uid_t pw_uid;
gid_t pw_gid;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
}
*/
struct passwd *pw;
/*获取当前用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
pw = getpwuid(getuid());
printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
/*获取指定用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
pw = getpwnam("gino");
printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
char computer[256];
/*
获取本地主机的标准主机名
int gethostname(char *name, size_t len);
name : 一个指向存放主机名的缓冲区指针
len : 缓冲区的长度
成功返回0,失败返回-1.
*/
gethostname(computer,256);
printf("hostname=%s\n",computer);
/*
struct utsname {
char sysname[]; //当前操作系统名
char nodename[]; //网络上的名称
char release[]; //当前发布级别
char version[]; //当前发布版本
char machine[]; //当前硬件体系类型
#ifdef _GNU_SOURCE
char domainname[]; //当前域名
#endif
};
*/
struct utsname uts;
/*
获取当前内核名称和其他信息
int uname(struct utsname *buf);
成功返回0,失败返回-1.
*/
uname(&uts);
printf("sysname=%s\n",uts.sysname);
printf("nodename=%s\n",uts.nodename);
printf("release=%s\n",uts.release);
printf("version=%s\n",uts.version);
printf("machine=%s\n",uts.machine);
return 0;
}
更多推荐
已为社区贡献8条内容
所有评论(0)