getpwuid не устанавливает ошибку

    uid_t userId = getuid();
    userId = 999;               // cause error

    errno = 0;
    passwd* pw = getpwuid(userId);

    int n = errno;    // pw = NULL, n = 0

Запустив этот код в Linux, я получаю pw = NULL (ожидаемый) и errno = 0. Согласно документации Linux http://linuxmanpages.com/man3/getpwuid.3.php, getpwuid должен установить errno. Что случилось?


person Alex F    schedule 24.04.2011    source источник


Ответы (2)


Из документации:

ERRORS
         0 or ENOENT or ESRCH or EBADF or EPERM or ...
                The given name or uid was not found.

Я не вижу проблемы.

person Ignacio Vazquez-Abrams    schedule 24.04.2011

Согласно документации, которую вы связали:

   0 or ENOENT or ESRCH or EBADF or EPERM or ...
          The given name or uid was not found.

Таким образом, errno == 0 вполне подходит для ненайденного uid.

person Douglas Leeder    schedule 24.04.2011