getlogin

Autres langues

Langue: ja

Version: 2003-08-24 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

getlogin, getlogin_r, cuserid - ¥æ¡¼¥¶¡¼Ì¾¤ò¼èÆÀ¤¹¤ë

½ñ¼°

#include <unistd.h>

char *getlogin(void);
int getlogin_r(char *buf, size_t bufsize);

#include <stdio.h>

char *cuserid(char *string);

ÀâÌÀ

getlogin() ¤Ï¡¢¸½ºß¤Î¥×¥í¥»¥¹¤ÎÀ©¸æüËö¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼Ì¾¤Îʸ»úÎó¤Ø¤Î ¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£¥æ¡¼¥¶¡¼Ì¾¤¬·èÄê¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï null ¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ ʸ»úÎó¤ÏÀÅŪÎΰè¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢¤³¤Î¸å¤Ç¤³¤Î´Ø¿ô¤ä cuserid() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿ºÝ¤Ë¾å½ñ¤­¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£

getlogin_r() ¤Ï¡¢¾åµ­¤ÎƱ¤¸¥æ¡¼¥¶Ì¾¤ò¡¢Â礭¤µ bufsize ¤ÎÇÛÎó buf ¤ËÆþ¤ì¤ÆÊÖ¤¹¡£

cuserid() ¤Ï¡¢¸½ºß¤Î¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶¡¼ID ¤ËÂбþ¤¹¤ë¥æ¡¼¥¶¡¼Ì¾¤Î ʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ string ¤¬ null ¥Ý¥¤¥ó¥¿°Ê³°¤Î¾ì¹ç¡¢string ¤Ï¾¯¤Ê¤¯¤È¤â L_cuserid ʸ»ú¤òÊÝ»ý¤Ç¤­¤ëÇÛÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ string ¤¬ null ¥Ý¥¤¥ó¥¿¤Î¾ì¹ç¤Ë¤Ï¡¢ÀÅŪÎΰè¤ËÃÖ¤«¤ì¤¿Ê¸»úÎó¤Ø¤Î ¥Ý¥¤¥ó¥¿¤¬ÊÖ¤µ¤ì¤ë¡£¤³¤Îʸ»úÎó¤ÏÀÅŪÎΰè¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢¸å¤Ç ¤³¤Î´Ø¿ô¤ä getlogin() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿ºÝ¤Ë¾å½ñ¤­¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¡£

¥Þ¥¯¥í L_cuserid ¤Ï integer ¤ÎÄê¿ô¤Ç¡¢¥æ¡¼¥¶¡¼Ì¾¤òÊÝ»ý¤¹¤ë¤¿¤á¤Ë ɬÍפÊÇÛÎó¤ÎŤµ¤ò¼¨¤¹¡£ L_cuserid ¤Ï stdio.h ¤ÇÀë¸À¤µ¤ì¤Æ ¤¤¤ë¡£

¤³¤ì¤é¤Î´Ø¿ô¤ò»È¤¦¤È¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼ (cuserid()) ¤ä ¤³¤Î¥»¥Ã¥·¥ç¥ó¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼ (getlogin()) ¤òÌÀ³Î¤ËÆÃÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë (¤¿¤À¤· set-user-ID ¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¾õ¶·¤¬°ã¤¦¤³¤È¤â¤¢¤ë)¡£

¤¿¤¤¤Æ¤¤¤ÎÌÜŪ¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤ÎÆÃÄê¤Ë¤Ï´Ä¶­ÊÑ¿ô LOGNAME ¤òÄ´¤Ù ¤ë¤Û¤¦¤¬ÊØÍø¤Ç¤¢¤ë¡£LOGNAME ÊÑ¿ô¤Ï¥æ¡¼¥¶¡¼¤¬¼«Í³¤ËÀßÄê¤Ç¤­¤ë¤Î¤Ç ¤è¤ê½ÀÆð¤ÊÂбþ¤¬²Äǽ¤Ë¤Ê¤ë¡£

ÊÖ¤êÃÍ

getlogin() ¤ÏÀ®¸ù¤·¤¿¾ì¹ç¤Ï¥æ¡¼¥¶Ì¾¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤·¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ï NULL ¤òÊÖ¤¹¡£ getlogin_r() ¤ÏÀ®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È 0 °Ê³°¤òÊÖ¤¹¡£

¥¨¥é¡¼

POSIX ¤Ç¤Ï°Ê²¼¤Î¥¨¥é¡¼¤¬µ¬Äꤵ¤ì¤Æ¤¤¤ë:
EMFILE
¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¿ô¤¬¤¹¤Ç¤Ë¥×¥í¥»¥¹¤¢¤¿¤ê¤Î ¾å¸Â¤Ë㤷¤Æ¤¤¤ë¡£
ENFILE
¥·¥¹¥Æ¥àÁ´ÂΤǥª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¿ô¤¬¤¹¤Ç¤Ë¾å¸Â¤Ë㤷¤Æ¤¤¤ë¡£
ENXIO
¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤ÏÀ©¸æüËö¤¬¤Ê¤¤¡£
ERANGE
(getlogin_r) (½ªÃ¼¤Î NULL ¥Ð¥¤¥È¤â´Þ¤á¤¿) ¥æ¡¼¥¶Ì¾¤ÎŤµ¤¬ bufsize ¤è¤ê¤âŤ¤¡£

Linux/glibc ¤Ë¤Ï°Ê²¼¤Î¥¨¥é¡¼¤â¤¢¤ë¡£

ENOENT
utmp ¥Õ¥¡¥¤¥ë¤ËÂбþ¤¹¤ë¥¨¥ó¥È¥ê¤¬¤Ê¤«¤Ã¤¿¡£
ENOMEM
passwd ¹½Â¤ÂΤò³ä¤êÅö¤Æ¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¤Ê¤¤¡£

¥Õ¥¡¥¤¥ë


/etc/passwd     ¥Ñ¥¹¥ï¡¼¥É¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Õ¥¡¥¤¥ë


/var/run/utmp (ÅÁÅýŪ¤Ë¤Ï /etc/utmp ¤¬»È¤ï¤ì¤Æ¤¤¤ë; libc ¤ÎÃæ¤Ë¤Ï /var/adm/utmp ¤ò»È¤¦¤â¤Î¤â¤¢¤ë)
/etc/utmp (¤« /var/adm/utmp¡¢¤¢¤ë¤¤¤ÏºÇ¶á¤Ç¤Ï¡¢ ¤È¤Ë¤«¤¯¤É¤³¤«¤Ë¤¢¤ë utmp - Àµ³Î¤Ê¾ì½ê¤Ï libc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤ë)

½àµò

getlogin() ¤È getlogin_r() ¤Ï POSIX.1-2001 ¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë¡£

System V ¤Ë¤â cuserid() ¤¬¤¢¤ë¤¬¡¢ ¤³¤ì¤Ï¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤Ç¤Ï¤Ê¤¯¡¢¼Â¥æ¡¼¥¶¡¼ ID ¤ò»ÈÍѤ¹¤ë¡£ cuserid() ´Ø¿ô¤Ï 1988 ǯÈǤΠPOSIX ¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤¿¤¬¡¢ 1990 ǯÈǤǤϺï½ü¤µ¤ì¤¿¡£ SUSv2 ¤Ë¸ºß¤·¤¿¤¬¡¢POSIX.1-2001 ¤Çºï½ü¤µ¤ì¤¿¡£

OpenBSD ¤Ë¤Ï getlogin() ¤È setlogin() ¤¬¤¢¤ê¡¢ ¥»¥Ã¥·¥ç¥ó¤ËÂбþ¤·¤¿¥æ¡¼¥¶Ì¾¤¬¤¢¤ë¡£À©¸æüËö¤¬¤Ê¤¤ ¥»¥Ã¥·¥ç¥ó¤Î¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â¡¢Âбþ¤¹¤ë¥æ¡¼¥¶Ì¾¤¬¤¢¤ë¡£

¥Ð¥°

»ÄÇ°¤Ê¤¬¤é¡¢ getlogin() ¤ò¤À¤Þ¤¹¤Î¤Ï¤½¤ì¤Û¤ÉÆñ¤·¤¤¤³¤È¤Ç¤Ï¤Ê¤¤¡£ÊÌ¤Î¥×¥í¥°¥é¥à¤¬ utmp ¥Õ¥¡¥¤¥ë¤ò ²õ¤·¤Æ¤·¤Þ¤¦¤È¡¢Á´¤¯Æ°ºî¤·¤Ê¤¤¤³¤È¤â¤¢¤ë¡£¤Þ¤¿¥í¥°¥¤¥ó̾¤ÎºÇ½é¤Î 8 ʸ»ú ¤·¤«ÊÖ¤µ¤Ê¤¤¤³¤È¤â¿¤¤¡£¤Þ¤¿¥×¥í¥°¥é¥à¤òÀ©¸æ¤·¤Æ¤¤¤ë tty ¤Ë ¸½ºß¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¡¼¤Ï¡¢¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤¿ ¥æ¡¼¥¶¡¼¤Ç¤Ê¤¤¾ì¹ç¤â¤¢¤ë¡£ ¥»¥­¥å¥ê¥Æ¥£¤ÎÍí¤àÍÑÅÓ¤Ë¤Ï getlogin() ¤òÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£

glibc ¤Ï POSIX »ÅÍͤˤϽ¾¤Ã¤Æ¤ª¤é¤º¡¢ /dev/tty ¤Ç¤Ï¤Ê¤¯ ɸ½àÆþÎÏ (stdin) ¤ò»È¤¦¡£¤³¤ì¤Ï¥Ð¥°¤Ç¤¢¤ë¡£ (SunOS 5.8 ¤ä HP-UX 11.11 ¤ä FreeBSD 4.8 ¤È¤¤¤Ã¤¿Â¾¤ÎºÇ¶á¤Î¥·¥¹¥Æ¥à¤Ï¤¤¤º¤ì¤â¡¢ ɸ½àÆþÎÏ ¤¬¥ê¥À¥¤¥ì¥¯¥È¤µ¤ì¤¿¾ì¹ç¤Ç¤â¥í¥°¥¤¥ó̾¤òÊÖ¤¹¡£)

cuserid() ¤¬²¿¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤«¡¢¼ÂºÝ¤Î¤È¤³¤í¤òÃΤäƤ¤¤ë¼Ô¤Ïï¤â¤¤¤Ê¤¤; °Ü¿¢À­¤¬µá¤á¤é¤ì¤ë¥×¥í¥°¥é¥à¤Ç¤Ï cuserid() ¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¤È¤¤¤¦¤«¤É¤ó¤Ê¥×¥í¥°¥é¥à¤Ç¤â»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤: Âå¤ï¤ê¤Ë getpwuid(geteuid()) ¤òÍѤ¤¤ë¤Ù¤­¤Ç¤¢¤ë (¤³¤ì¤¬°Õ¿Þ¤·¤Æ¤¤¤ë¤³¤È¤Ê¤é¤Ð¡¢¤À¤¬)¡£ cuserid() ¤Ï¡Ö»È¤ï¤Ê¤¤¡×¤³¤È¡£

´ØÏ¢¹àÌÜ

geteuid(2), getuid(2)