我想知道是否可以以编程方式获取使用C语言在Linux机器上登录的用户数量?我做了一些研究,发现了有关utmp.h的信息,但是由于并非所有程序都使用utmp日志记录,因此我认为它不够准确。在此先感谢任何愿意提供帮助的人。

编辑:我为没有具体说明而向大家道歉,但是当我说登录用户时,我指的是通过shell登录的任何人。基本上,当您运行不带命令行参数的who命令时会得到什么。

最佳答案

#include <utmp.h>
#include <err.h>

#define NAME_WIDTH  8

    FILE *ufp;
    int numberOfUsers = 0;
    struct utmp usr;
    ufp = file(_PATH_UTMP);
    while (fread((char *)&usr, sizeof(usr), 1, ufp) == 1) {
    if (*usr.ut_name && *usr.ut_line && *usr.ut_line != '~') {
         numberOfUsers++;
        }
    }

    FILE *file(char *name)
    {
        FILE *ufp;

        if (!(ufp = fopen(name, "r"))) {
            err(1, "%s", name);
        }
        return(ufp);
    }

在与utmp玩了几天之后,我发现了。感谢您的帮助。

09-19 11:53