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
  • 相关阅读:
    SDN——实验脚本4-1:ovsSingleBr.py
    SDN——实验脚本4-2:ovsMultiBr.py
    SDN——实验脚本4-3:ovsVLAN.py
    C语言I博客作业01
    C语言I作业09
    C语言I作业08
    C语言I作业07
    C语言I作业06
    C语言I作业05
    C语言I博客作业04
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2055935.html
Copyright © 2011-2022 走看看