Ниже приведен окончательный код, над которым я работал. Я могу спать и снова показывать другие сообщения с помощью sleep (), но я не могу напечатать то, что первоначально хотел, который находится внутри 2nd while loop . Насколько я тестировал, 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);
}
}