如何以编程方式获取Linux机器上登录的用户数量?

Err*_*f1f 5 c linux bash

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

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

Err*_*f1f 6

#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);
    }
Run Code Online (Sandbox Code Playgroud)

经过几天的 utmp 玩弄之后,我明白了。谢谢你们的帮助。