3
    uid_t userId = getuid();
    用户 ID = 999; // 导致错误

    错误号 = 0;
    passwd* pw = getpwuid(userId);

    int n = 错误号;// pw = NULL, n = 0

在 Linux 中运行此代码,我得到 pw = NULL(预期)和 errno = 0。根据 Linux 文档http://linuxmanpages.com/man3/getpwuid.3.php,getpwuid必须设置 errno。怎么了?

4

2 回答 2

4

从文档中:

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

我看不到问题。

于 2011-04-24T07:02:25.220 回答
3

根据您链接的文档:

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

所以 errno == 0 对于未找到的 uid 是完全有效的。

于 2011-04-24T07:02:58.093 回答