0
以下是我正在处理的最终代码。我可以睡觉并再次显示其他睡眠信息(),但我无法打印出我最初想要的内容,这是第二张内部循环。据我测试,while((ptr = getutent())!= NULL)将是问题,但我不知道如何解决。如果有人能帮助我,我将不胜感激。谢谢如何重置getutent()的指针
注意:程序显示当前登录用户每5秒钟,直到用户用Ctrl + c停止。
#include <utmp.h>
#include <pwd.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
struct utmp *ptr;
struct passwd *pwd;
while(1)
{
while((ptr=getutent()) != NULL)
{
if(ptr->ut_type==USER_PROCESS)
{
pwd=getpwnam(ptr->ut_user);
printf("USERNAME = %s | ID = %d | GID = %d | ",p
tr->ut_user,pwd->pw_uid,pwd->pw_gid);
printf("HomeDir = %s | HOST = %s\n",pwd->pw_dir,
ptr->ut_host);
}
}
sleep(3);
fflush(stdout);
}
}
哦,我明白了。让我试试setutent() – Devyn 2010-01-04 21:12:06
哦,你是专业!非常感谢。这就是我想要的! – Devyn 2010-01-04 21:13:11
当您完成释放函数族使用的文件描述符时,使用'endutent()'。 (getpwent(),setpwent(),endpwent()],[getgrent(),setgrent(),endgrent()]和[getutent(),setutent(),endutent() ]。仅列出三组这样的功能。 – 2010-01-05 01:31:39