У меня есть проблема, которую я сузил настолько, насколько я могу себе представить. Я хочу посчитать строки в /etc/passwd
два раза. Один раз в качестве ссылки и один раз, чтобы обнаружить любое изменение.
Я инициализирую одну passwd
структуру и подсчитываю количество записей в ней. Я тогда звоню setpwent()
. После того, как я это сделал, я инициализирую вторую структуру passwd
, обратите внимание, что я добавил вызов sleep
, поэтому достаточно добавить еще одного пользователя. Проблема в том, что новая структура идентична первой, хотя я добавил нового пользователя и инициализировал новую структуру после ее добавления. Так что без разницы.
#include <stdio.h>
#include <pwd.h>
#include <unistd.h>
int main()
{
for(;;)
{
struct passwd *i;
int y = 0;
while((i = getpwent()) != NULL)
y++;
printf("Lines : %d\n", y);
setpwent();
sleep(30);
struct passwd *j;
int x = 0;
while((j = getpwent()) != NULL)
x++;
printf("Lines : %d\n", x);
setpwent();
}
}