• 打开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
  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2055935.html
Copyright © 2020-2023  润新知