2016-08-26 21 views
2

Linuxでは、私はユーザー名を持っていれば、どのようにユーザーIDを取得するのですか?私は男のgetuidを使用しましたが、それについて手がかりを見つけることはできません。 EDIT1: 申し訳ありません、apiでユーザーIDを取得します。私は、システム機能を呼び出すなど、それを行う別のプロセスを捨てるのは好きではありません。ユーザー名でlinuxのユーザーIDを取得するには?

grep username /etc/passwd | cut -f3 -d':' 

答えて

3

単にあなたがgrepするとカットするので、すべてのユーザ名は、/etc/passwdにリストされているidコマンド

id username

[[email protected] ~]# id sylvain 
uid=1003(sylvain) gid=1005(sylvain) groups=1005(sylvain) 
1

を使用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を参照してください。

4

あなたはポインタを取得するためにgetpwnamを使用することができます。

関連する問題