zoukankan      html  css  js  c++  java
  • 打开utmp文件,访问其中的内容


    //1:定义一个utmp结构体。保存读到的数据。
    //2:只读方式打开 /var/run/utmp 文件。
    //3:循环调用(read) 读取数据,直到读完位置。
    //4:每次读完数据后判断是普通用户的话,
    //打印登陆用户名,终端号,登陆时间
    //5:注意:打印时间的时候用ctime去转换。
    //if(A.ut_type==USER_PROCESS)
    #include <stdio.h>
    #include
    <unistd.h>
    #include
    <utmp.h>
    #include
    <fcntl.h>
    #include
    <time.h>
    int main(int argc, char *argv[])
    {
    int fd;
    struct utmp A;
    fd
    =open("/var/run/utmp",O_RDONLY);
    while(read(fd,&A,sizeof(A))!=0)
    {
    if(A.ut_type==USER_PROCESS) // 如果是普通用户则打印用户名、终端、和登陆时间。
    printf("%s\t%s\t%s\n",A.ut_user,A.ut_line,ctime(&A.ut_tv.tv_sec));
    }

    return 0;
    }


    程序2:

    #include <stdio.h>
    #include
    <unistd.h>
    #include
    <utmp.h>
    #include
    <fcntl.h>
    #include
    <time.h>
    int main(int argc, char *argv[])
    {
    FILE
    *fp;
    struct utmp A;
    fp
    =fopen("/var/run/utmp","r");
    while(fread(&A,sizeof(A),1,fp))
    {
    if(A.ut_type==USER_PROCESS)
    printf(
    "%s\t%s\t%s",A.ut_user,A.ut_line,ctime(&A.ut_tv.tv_sec));
    }

    return 0;
    }

    /var/run/utmp是一个二进制文件,记录当前登录系统的用户信息。可用who命令显示当中的内容。如:

    debian:/var/log# who
    23:23:46 up 3:14, 3 users, load average: 0.61, 0.60, 0.45
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root :0 - 20:12 ?xdm? 33:58 1.91s x-session-manager
    root pts/1 :0.0 23:19 8.00s 0.28s 0.21s ssh reomte
    root pts/3 :0.0 22:31 0.00s 0.23s 0.00s wd
  • 相关阅读:
    【转】Quartz Cron 触发器 Cron Expression 的格式
    [转]MYSQL同时LEFT JOIN 多个表一例
    collapse用法
    flavor用法
    horny
    ever since用法
    be headed for用法
    Lemme用法
    scary用法
    feel like用法
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2055935.html
Copyright © 2011-2022 走看看