uid_t userId = getuid(); ユーザー ID = 999; // エラーの原因 エラー番号 = 0; passwd* pw = getpwuid(userId); int n = errno; // pw = NULL、n = 0
このコードを Linux で実行すると、pw = NULL (予期される) と errno = 0 が返されます。なにが問題ですか?
ドキュメントから:
ERRORS 0 or ENOENT or ESRCH or EBADF or EPERM or ... The given name or uid was not found.
問題が見当たりません。
リンクしたドキュメントによると:
0 or ENOENT or ESRCH or EBADF or EPERM or ...
The given name or uid was not found.
したがって、 errno == 0 は、見つからない uid に対して完全に有効です。