こんにちは、あなたのユーザIDに一致するグループIDを持つすべてのユーザ名をリストしようとしています。私はgetpwentを使うことを考えていましたが、それを得るのが難しいように見えました。無限ループを起こすようで、同じグループ名を持つものだけをフィルタリングすることはできません。ユーザグループIDを取得し、同じグループIDを持つユーザのリストを表示
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
#include <unistd.h>
#include <stdio.h>
int main(){
uid_t myId;
myId = getuid();
struct passwd *pPwdInfo = NULL;
pPwdInfo = getpwuid(myId);
if((pPwdInfo = getpwuid(myId)) != NULL){
int gId = pPwdInfo->pw_gid;
struct passwd *pwd_entry = NULL;
pwd_entry = getpwent();
setpwent(); // go to the top of /etc/passwd
while(pwd_entry){
printf("Username: %s\n", pwd_entry->pw_name);
printf("Password: %s\n", pwd_entry->pw_passwd);
printf("User Id: %d\n", pwd_entry->pw_uid);
printf("Group Id: %d\n", pwd_entry->pw_gid);
printf("User info: %s\n", pwd_entry->pw_gecos);
printf("Home Directory: %s\n", pwd_entry->pw_dir);
printf("Shell Program: %s\n", pwd_entry->pw_shell);
}
endpwent();
}else{
}
return 0;
}
サイドノート:どのような用途がありますか?ユーザーグループがあっても、UIDとGIDの間には相関関係はありません。 – Olaf