getutent

Autres langues

Langue: ja

Version: 1996-07-25 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

̾Á°

getutent, getutid, getutline, pututline, setutent, endutent, utmpname - utmp ¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë

½ñ¼°

#include <utmp.h>

struct utmp *getutent(void);
struct utmp *getutid(struct utmp *ut);
struct utmp *getutline(struct utmp *ut);

struct utmp *pututline(struct utmp *ut);

void setutent(void);
void endutent(void);

void utmpname(const char *file);

ÀâÌÀ

utmpname() ¤Ï¡¢Â¾¤Î utmp ´Ø¿ô¤¬¥¢¥¯¥»¥¹¤¹¤ë (utmp ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î) ¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤹ¤ë¡£Â¾¤Î´Ø¿ô¤ò»È¤¦Á°¤Ë utmpname() ¤ò»È¤Ã¤Æ ¥Õ¥¡¥¤¥ë̾¤Î»ØÄê¤ò¹Ô¤ï¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ <path.h> ¤Ç ÄêµÁ¤µ¤ì¤Æ¤¤¤ë _PATH_UTMP ¤¬¥Õ¥¡¥¤¥ë̾¤È¤ß¤Ê¤µ¤ì¤ë¡£

setutent() ¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ò utmp ¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë°ÜÆ°¤¹¤ë¡£ °ìÈÌŪ¤Ë¤Ï¡¢Â¾¤Î´Ø¿ô¤ò»È¤¦Á°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤ª¤¯¤ÈÎɤ¤¤À¤í¤¦¡£

endutent() ¤Ï utmp ¥Õ¥¡¥¤¥ë¤ò¥¯¥í¡¼¥º¤¹¤ë¡£¥æ¡¼¥¶¡¼¥³¡¼¥É¤Ç ¾¤Î´Ø¿ô¤ò»È¤Ã¤Æ¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¥¢¥¯¥»¥¹¤ò¹Ô¤Ã¤¿»þ¤Ï¡¢ºÇ¸å¤Ë¤³¤Î´Ø¿ô¤ò ¸Æ¤Ó½Ð¤¹¤Ù¤­¤Ç¤¢¤ë¡£

getutent() ¤Ï utmp ¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥Õ¥¡¥¤¥ë°ÌÃÖ¤«¤é°ì¹ÔÆɤ߹þ¤ß¡¢ ¹Ô¤Î³Æ¥Õ¥£¡¼¥ë¥É¤ÎÆâÍƤò¼ý¤á¤¿¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òÊÖ¤¹¡£

getutid() ¤Ï¡¢ utmp ¥Õ¥¡¥¤¥ëÃæ¤Î¸½ºß¤Î°ÌÃÖ¤«¤é½çÊý¸þ (ËöÈø¤Ë¸þ¤«¤¦Êý¸þ) ¤Ø ut ¤Ë´ð¤¯¸¡º÷¤ò¹Ô¤¦¡£ ut->ut_type ¤¬ RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME ¤Î ¤¤¤º¤ì¤«¤Ê¤é¡¢ getutid() ¤Ï ut_type ¥Õ¥£¡¼¥ë¥É¤¬ ut->ut_type ¤Ë°ìÃפ¹¤ëºÇ½é¤Î¥¨¥ó¥È¥ê¤òõ¤¹¡£ ut->ut_type ¤¬ INIT_PROCESS, LOGIN_PROCESS, USER_PROCESS, DEAD_PROCESS ¤Î¤¤¤º¤ì¤«¤Ê¤é¡¢ getutid() ¤Ï ut_id ¥Õ¥£¡¼¥ë¥É¤¬ ut->ut_id ¤Ë °ìÃפ¹¤ëºÇ½é¤Î¥¨¥ó¥È¥ê¤òõ¤¹¡£

getutline() ¤Ï¡¢ utmp ¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î°ÌÃÖ¤«¤éËöÈø¤Ë¸þ¤«¤Ã¤Æ ¸¡º÷¤ò¹Ô¤¦¡£ ut_type ¤¬ USER_PROCESS ¤Þ¤¿¤Ï LOGIN_PROCESS ¤Ç¡¢ ut_line ¥Õ¥£¡¼¥ë¥É¤¬ ut->ut_line ¤Ë¥Þ¥Ã¥Á¤¹¤ëºÇ½é¤Î ¹Ô¤òÊÖ¤¹¡£

pututline() ¤Ï utmp ¹½Â¤ÂÎ ut ¤ÎÆâÍƤò utmp ¥Õ¥¡¥¤¥ë¤Ë ½ñ¤­½Ð¤¹¡£ pututline() ¤Ï getutid() ¤òÍѤ¤¤Æ¡¢¿·¤¿¤Ê¥¨¥ó¥È¥ê¤ò ÁÞÆþ¤¹¤ë¤Î¤Ë¤Õ¤µ¤ï¤·¤¤¾ì½ê¤òõ¤¹¡£ ut ¤òÁÞÆþ¤¹¤ë¤Õ¤µ¤ï¤·¤¤¾ì½ê¤¬ ¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ï¡¢¿·¤¿¤Ê¥¨¥ó¥È¥ê¤ò¥Õ¥¡¥¤¥ë¤ÎËöÈø¤ËÄɲ乤롣

ÊÖ¤êÃÍ

getutent(), getutid(), getutline(), pututline() ¤Ï À®¸ù»þ¤Ï struct utmp ¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤·¡¢¼ºÇÔ»þ¤Ï NULL ¤òÊÖ¤¹¡£ ¤³¤Î struct utmp ¤ÏÀÅŪ¤Êµ­²±Îΰè¤Ë³ÎÊݤµ¤ì¡¢¼¡¤Ë¤³¤ì¤é¤Î´Ø¿ô¤ò ¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë¾å½ñ¤­¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

¥Õ¥¡¥¤¥ë

/var/run/utmp ¸½ºß¥í¥°¥¤¥óÃæ¤Î¥æ¡¼¥¶¡¼¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹
/var/log/wtmp ²áµî¤Î¥æ¡¼¥¶¡¼¥í¥°¥¤¥ó¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹

½àµò

XPG2, SVr4.

XPG2 ¤È SVID 2 ¤Ç¤Ï¡¢ pututline() ´Ø¿ô¤ÏÃͤòÊÖ¤µ¤Ê¤¤¤È¤µ¤ì¤Æ¤ª¤ê¡¢ (AIX, HP-UX, Linux libc5 ¤Ê¤É¤Î) ¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¤½¤¦¤Ê¤Ã¤Æ¤¤¤ë¡£ HP-UX ¤Ç¤Ï¡¢¾å½Ò¤Î pututline() ¤ÈƱ¤¸¥×¥í¥È¥¿¥¤¥×¤ò»ý¤Ä ¿·¤·¤¤´Ø¿ô _pututline() ¤¬Æ³Æþ¤µ¤ì¤Æ¤¤¤ë (¤³¤Î´Ø¿ô¤Ï Linux libc5 ¤Ë¤â¤¢¤ë)¡£

¸½ºß¤Ç¤Ï¡¢Linux °Ê³°¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤ì¤é¤Î´Ø¿ô¤ÏÁ´¤ÆÇѻߤµ¤ì¤Æ¤¤¤ë¡£ SUSv1 ¤Î¸å¤Ë½Ð¤Æ¤­¤¿ POSIX.1-2001 ¤Ç¤Ï¡¢¤â¤Ï¤ä¤³¤ì¤é¤Î´Ø¿ô¤Ï¤Ê¤¯¡¢ Âå¤ï¤ê¤Ë°Ê²¼¤Î¤â¤Î¤ò»È¤¦¡£

#include <utmpx.h>

struct utmpx *getutxent(void);
struct utmpx *getutxid(const struct utmpx *);
struct utmpx *getutxline(const struct utmpx *);
struct utmpx *pututxline(const struct utmpx *);
void setutxent(void);
void endutxent(void);

utmpx ¹½Â¤ÂÎ¤Ï utmp ¹½Â¤ÂΤΥ¹¡¼¥Ñ¡¼¥»¥Ã¥È¤Ç¡¢ ¥Õ¥£¡¼¥ë¥É¤¬Äɲ䵤ì¤Æ¤¤¤¿¤ê¡¢´û¸¤Î¥Õ¥£¡¼¥ë¥É¤Î¥µ¥¤¥º¤¬ Â礭¤¯¤Ê¤Ã¤¿¤ê¤·¤Æ¤¤¤ë¡£ Âбþ¤¹¤ë¥Õ¥¡¥¤¥ë¤ÏÉáÄÌ /var/*/utmpx ¤È /var/*/wtmpx ¤Ç¤¢¤ë¡£

°ìÊý¡¢ Linux glibc ¤Ï utmpx ¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¡£ utmp ¹½Â¤ÂΤ¬½½Ê¬¤ËÂ礭¤¤¤«¤é¤Ç¤¢¤ë¡£ getutxent ¤Ê¤É¤Î´Ø¿ô¤Ï getutent ¤Ê¤É¤ÎÊÌ̾¤È¤Ê¤Ã¤Æ¤¤¤ë¡£

Ãí°Õ

glibc ¤Ç¤ÎÃí°Õ

¾åµ­¤Î´Ø¿ô·²¤Ï¥¹¥ì¥Ã¥É¡¦¥»¡¼¥Õ¤Ç¤Ï¤Ê¤¤¡£ glibc ¤Ë¤Ï¥ê¥¨¥ó¥È¥é¥ó¥ÈÈÇ (reentrant) ¤¬Äɲ䵤ì¤Æ¤¤¤ë¡£

#define _GNU_SOURCE    /* or _SVID_SOURCE or _BSD_SOURCE */

#include <utmp.h>



int getutent_r(struct utmp *ubuf, struct utmp **ubufp);



int getutid_r(struct utmp *ut,

              struct utmp *ubuf, struct utmp **ubufp);



int getutline_r(struct utmp *ut,

                struct utmp *ubuf, struct utmp **ubufp);

¤³¤ì¤é¤Î´Ø¿ô¤Ï GNU ¤Ç¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢ËöÈø¤Î _r ¤ò¤È¤Ã¤¿Ì¾Á°¤Î´Ø¿ô¤È ƱÍͤε¡Ç½¤ò»ý¤Ä¡£ ubuf ¥Ñ¥é¥á¡¼¥¿¤Ï·ë²Ì¤ò³ÊǼ¤¹¤ë¾ì½ê¤ò»ØÄꤹ¤ë¡£ À®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤·¡¢·ë²Ì¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò *ubufp ¤Ë½ñ¤­¹þ¤à¡£¥¨¥é¡¼¤Î¾ì¹ç -1 ¤òÊÖ¤¹¡£

Îã

°Ê²¼¤ÎÎã¤Ç¤Ï¡¢ utmp ¤Î¥ì¥³¡¼¥É¤ÎÄɲᦺï½ü¤ò¹Ô¤Ã¤Æ¤¤¤ë¡£¤³¤Î¥³¡¼¥É¤Ï¡¢ µ¼»÷üËö (pseudo terminal) ¤«¤é¼Â¹Ô¤µ¤ì¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤ë¡£ ¼ÂºÝ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï getpwuid(3) ¤È ttyname(3) ¤ÎÌá¤êÃͤò¸¡ºº¤¹¤ë¤Ù¤­¤Ç¤¢¤ë¡£

#include <string.h>

#include <stdlib.h>

#include <pwd.h>

#include <unistd.h>

#include <utmp.h>



int

main(int argc, char *argv[])

{

    struct utmp entry;



    system("echo before adding entry:;who");



    entry.ut_type=USER_PROCESS;

    entry.ut_pid=getpid();

    strcpy(entry.ut_line,ttyname(0)+strlen("/dev/"));

    /* only correct for ptys named /dev/tty[pqr][0-9a-z] */

    strcpy(entry.ut_id,ttyname(0)+strlen("/dev/tty"));

    time(&entry.ut_time);

    strcpy(entry.ut_user,getpwuid(getuid())->pw_name);

    memset(entry.ut_host,0,UT_HOSTSIZE);

    entry.ut_addr=0;

    setutent();

    pututline(&entry);



    system("echo after adding entry:;who");



    entry.ut_type=DEAD_PROCESS;

    memset(entry.ut_line,0,UT_LINESIZE);

    entry.ut_time=0;

    memset(entry.ut_user,0,UT_NAMESIZE);

    setutent();

    pututline(&entry);



    system("echo after removing entry:;who");



    endutent();

    exit(EXIT_SUCCESS);

}

´ØÏ¢¹àÌÜ

utmp(5), feature_test_macros(7)