[devel] Нужно ли вызывать endpwent() после использования getpwuid() ?

Slava Semushin =?iso-8859-1?q?slava=2Esemushin_=CE=C1_gmail=2Ecom?=
Пн Фев 26 16:32:03 MSK 2007


Здравствуйте!

Листал тут на работе книжку от O'Reilly "Secure Programming Book for C
and C++" и увидел такой пример:

%%
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <pwd.h>

int main(int argc, char *argv[]) {
  uid_t uid;
  struct passwd *pwd;

  uid = getuid();
  printf("User's UID is %d.\n", (int)uid);
  if ( ! (pwd = getpwuid(uid))) {
    printf("Unable to get user's password file record!\n");
    endpwent();
    return 1;
  }

  printf("User's home directory is %s\n", pwd->pw_dir);
  endpwent();

  return 0;
}
%%

Собственно, привлёк внимание факт вызова endpwent(). Почитал ман к
Линуксу, к Нетке, ещё каких-то в интернете и не очень понял,
действительно ли нужно после вызова getpwuid() вызывать endpwent().

Пожалуйста, разъясните этот момент, ведь если я правильно понял, то
невызов endpwent() чреват утечкой файлового дескриптора.

Заранее спасибо!

-- 
+ Slava Semushin | slava.semushin @ gmail.com
+ ALT Linux Team | php-coder @ altlinux.ru


Подробная информация о списке рассылки Devel