getpwnam()
ユーザー名を呼び出し、そのユーザー名を関数に渡し、再度呼び出す簡単なプログラムを作成しgetpwnam()
ました。何らかの理由で、常に関数内の root の passwd 情報を取得します。
#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
これに関連するマニュアルページには何も見つかりません。私が間違っていることはありますか?
前もって感謝します!