红联Linux门户
Linux帮助

请问一个进程编程的问题

发布时间:2007-09-26 20:05:51来源:红联作者:afengfeng
《GNU/Linux编程指南第2版》第13张进程控制中有个例子程序,源代码getname.c如下:

#include
#include
#include
#include
#include

int main(void)
{
char *login;
struct passwd *pentry;

/* Get the login name */
if((login = getlogin()) == NULL) { /* oops */
perror("getlogin");
exit(EXIT_FAILURE);
}

/* Get the password entry for login */
if((pentry = getpwnam(login)) == NULL) {
perror("getpwnam");
exit(EXIT_FAILURE);
}

/* Display the password entry */
printf("user name: %s\n", pentry- >pw_name);
printf("UID : %d\n", pentry- >pw_uid);
printf("GID : %d\n", pentry- >pw_gid);
printf("gecos : %s\n", pentry- >pw_gecos);
printf("home dir : %s\n", pentry- >pw_dir);
printf("shell : %s\n", pentry- >pw_shell);

exit(EXIT_SUCCESS);
}

该程序是显示哪个用户在运行进程,输出用户名、UID等信息。可是运行的时候出现问题,调用getlogin()函数后返回却是NULL,得不到用户名(我以普通用户身份登陆linux系统)
$./getname
getlogin:no such file or directory
请问是怎么回事?
文章评论

共有 0 条评论