我想知道是否可以用 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 之后,我弄明白了。感谢您的帮助。
关于c - 如何以编程方式获取登录到 Linux 机器上的用户数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219695/