zoukankan      html  css  js  c++  java
  • who命令

    who1.c

    #include <stdio.h>
    #include <utmp.h>
    #include <fcntl.h>
    #include <unistd.h>

    #define SHOWHOST /*include remote machine on output*/

    show_info(struct utmp *utbufp)
    {
    printf("% -8.8s", utbufp->ut_name);//the logname
    printf(" ");//a space
    printf("% -8.8s", utbufp->ut_line);//the tty
    printf(" ");//a space
    printf("% -10ld", utbufp->ut_time);//login time
    printf(" ");//a space
    #ifdef SHOWHOST
    printf("(%s)", utbufp->ut_host);//the host
    #endif
    printf(" ");//newline
    }
    int main()
    {
    struct utmp current_record; /*read info into here*/
    int utmpfd; /*read from this descriptor*/
    int reclen = sizeof(current_record);

    if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
    {
    perror(UTMP_FILE);/*UTMP_FILE is utmp.h*/
    exit(1);
    }

    while(read(utmpfd, &current_record, reclen) == reclen)
    show_info(&current_record);
    close(utmpfd);
    return 0;/*went ok*/

    }

    who2.c

    #include <stdio.h>
    #include <utmp.h>
    #include <fcntl.h>
    #include <unistd.h>
    //who2 added
    #include <time.h>

    #define SHOWHOST /*include remote machine on output*/

    void show_info(struct utmp *utbufp);
    //who2 added
    void showtime(long);

    int main()
    {
    struct utmp current_record; /*read info into here*/
    int utmpfd; /*read from this descriptor*/
    int reclen = sizeof(current_record);

    if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1)
    {
    perror(UTMP_FILE);/*UTMP_FILE is utmp.h*/
    exit(1);
    }

    while(read(utmpfd, &current_record, reclen) == reclen)
    show_info(&current_record);
    close(utmpfd);
    return 0;/*went ok*/

    }

    show_info(struct utmp *utbufp)
    {
    //who2 added
    if (utbufp->ut_type != USER_PROCESS)
    {
    return;
    }
    //who2 end
    printf("% -8.8s", utbufp->ut_name);//the logname
    printf(" ");//a space
    printf("% -8.8s", utbufp->ut_line);//the tty
    printf(" ");//a space
    //printf("% -10ld", utbufp->ut_time);//login time
    //printf(" ");//a space
    showtime(utbufp->ut_time);
    #ifdef SHOWHOST
    printf("(%s)", utbufp->ut_host);//the host
    #endif
    printf(" ");//newline
    }

    //who2 added
    void showtime(long timeval)
    {
    char *cp;//to hold address of time
    cp = ctime(&timeval);
    printf("%12.12s", cp+4);//pick 12 chars from pos 4
    }
    //who2 end

  • 相关阅读:
    UNIX环境高级编程——Linux终端设备详解
    UNIX网络编程——网络IPC:套接字
    UNIX网络编程——Socket通信原理和实践
    UNIX环境高级编程——单实例的守护进程
    UNIX环境高级编程——初始化一个守护进程
    UNIX环境高级编程——创建孤儿进程
    UNIX环境高级编程——实现uid to name
    UNIX环境高级编程——标准IO-实现查看所有用户
    自考-数据库及应用
    自考-数据库及应用
  • 原文地址:https://www.cnblogs.com/wolflion/p/3208527.html
Copyright © 2011-2022 走看看