1
我寫了一個簡單的程序,在用戶名上調用getpwnam()
,將該用戶名傳遞給函數,然後再次調用getpwnam()
。出於某種原因,我總是在函數內部獲取root的passwd信息。爲什麼getpwnam()總是返回函數中的根信息?
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
void printuser(char *username) {
printf("USERNAME2: %s\n", username);
struct passwd *user_info = getpwnam(username);
printf("USERNAME3: %s\n", username);
printf("USERNAME4: %s\n", user_info->pw_name);
}
int main(int argc, char *argv[]) {
struct passwd *user_info = getpwnam(argv[1]);
printf("USERNAME1: %s\n", user_info->pw_name);
printuser(user_info->pw_name);
printf("USERNAME5: %s\n", user_info->pw_name);
}
程序會產生以下輸出:
$ ./test_getpwnam chenxiaolong
USERNAME1: chenxiaolong
USERNAME2: chenxiaolong
USERNAME3: root
USERNAME4: root
USERNAME5: root
我無法找到與此相關的手冊頁什麼。有什麼我做錯了嗎?
在此先感謝!
非常感謝!我應該更仔細地閱讀手冊頁:) –