Linuxでは、私はユーザー名を持っていれば、どのようにユーザーIDを取得するのですか?私は男のgetuidを使用しましたが、それについて手がかりを見つけることはできません。 EDIT1: 申し訳ありません、apiでユーザーIDを取得します。私は、システム機能を呼び出すなど、それを行う別のプロセスを捨てるのは好きではありません。ユーザー名でlinuxのユーザーIDを取得するには?
grep username /etc/passwd | cut -f3 -d':'
Linuxでは、私はユーザー名を持っていれば、どのようにユーザーIDを取得するのですか?私は男のgetuidを使用しましたが、それについて手がかりを見つけることはできません。 EDIT1: 申し訳ありません、apiでユーザーIDを取得します。私は、システム機能を呼び出すなど、それを行う別のプロセスを捨てるのは好きではありません。ユーザー名でlinuxのユーザーIDを取得するには?
grep username /etc/passwd | cut -f3 -d':'
単にあなたがgrepするとカットするので、すべてのユーザ名は、/etc/passwd
にリストされているidコマンド
id username
[[email protected] ~]# id sylvain
uid=1003(sylvain) gid=1005(sylvain) groups=1005(sylvain)
を使用pw_uid
のメンバーを持つstruct passwd
構造に転送します。プログラム例:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <pwd.h>
int main(int argc, char *argv[])
{
const char *name = "root";
struct passwd *p;
if (argc > 1) {
name = argv[1];
}
if ((p = getpwnam(name)) == NULL) {
perror(name);
return EXIT_FAILURE;
}
printf("%d\n", (int) p->pw_uid);
return EXIT_SUCCESS;
}
getpwnam_r
を参照してください。
あなたはポインタを取得するためにgetpwnam
を使用することができます。