getlogin.c

来自「KPIT GNU Tools is a set of GNU developme」· C语言 代码 · 共 43 行

C
43
字号
#include <string.h>#include <unistd.h>#include <sys/types.h>#include <utmp.h>#include <fcntl.h>#include <_syslist.h>char *getlogin (){  int utmp_fd;  struct utmp utmp_buf;  static char buf[10];  extern char *ttyname ();  char *tty;  if (((tty = ttyname (0)) == 0)      || ((tty = ttyname (1)) == 0)      || ((tty = ttyname (2)) == 0))    return 0;  if ((utmp_fd = open (UTMP_FILE, O_RDONLY)) == -1)    return 0;  if (!strncmp (tty, "/dev/", 5))    tty += 5;  while (read (utmp_fd, &utmp_buf, sizeof (utmp_buf)) == sizeof (utmp_buf))    {      if (!strncmp (tty, utmp_buf.ut_line, sizeof (utmp_buf.ut_line))	  && utmp_buf.ut_type == USER_PROCESS)	{	  close (utmp_fd);	  memset (buf, 0, sizeof (buf));	  strncpy (buf, utmp_buf.ut_user, sizeof (utmp_buf.ut_user));	  return buf;	}    }  close (utmp_fd);  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?