如何重置getutent()的指针

时间:2010-01-04 21:05:58

标签: c linux

以下是我正在处理的最终代码。我可以睡觉并再次显示睡眠()的其他消息,但我无法打印我最初想要的内容,第二次 while循环。据我测试, while((ptr = getutent())!= NULL)会出问题,但我不知道如何解决。如果有人能帮助我,我真的很感激。感谢

注意:程序每隔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);
    }

}

1 个答案:

答案 0 :(得分:2)

您想使用setutent()将文件指针设置回utmp文件的开头。