我想知道是否可以用 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);
}
Run Code Online (Sandbox Code Playgroud)
经过几天的 utmp 玩弄之后,我明白了。谢谢你们的帮助。