| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
1,715 バイト追加 、 2020年2月15日 (土) 07:30
ページの作成:「==C ユーザ情報== [Programming C] *すべてのLinux programは、initを除いて、他のprogramまたはuserから実行される。 *内部的にはuserは、…」
==C ユーザ情報==
[Programming C]
*すべてのLinux programは、initを除いて、他のprogramまたはuserから実行される。
*内部的にはuserは、一意のuser ID UID を持っている。
*programに、setUID permision を set すればあたかも別の user が起動したかの様にprogramを起動できる。
*UIDには、uid_t という独自の型があり、sys/types.hで定義されている。
====getuid、getloin====
#include <sys/types.h>
#include <unistd.h>
uid_t getuid(void);
char *getlogin(void);

*getuidはprogramに関連付けられているUIDを返す
*getloginは、現在のuserのlogin名を返す
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
uid_t uid = getuid();
char *login = getlogin();
printf("%d : %s\n" ,uid, login);

exit(0);
}
====getpwduid、getpwnam====
*user情報を効率的に取得するための標準的なprogramming interfaceが用意されている。
#include <sys/types.h>
#include <pwd.h>
struct passwd *getpwduid(uid_t uid);
struct passwd *getpwnam(const char *name);

{|class="wikitable"
!member
!説明
|-
|char *pw_name
|userのlogin名
|-
|uid_t pw_uid
|UID
|-
|gid_t pw_gid
|GID
|-
|char *pw_dir
|user の home directory
|-
|char *pw_shell
|user の default shell
|-
|}

#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>#include <stdio.h>
#include <stdlib.h>

int main()
{
uid_t uid = getuid();
struct passwd *pw;

pw = getpwuid(uid);
printf("%s %d %d %s %s\n", pw->pw_name, pw->pw_uid, pw->pw_gid,
pw->pw_dir, pw->pw_shell);
exit(0);
}
----
この本からの覚書。
{{amazon|4797327014}}

案内メニュー