我一直在寻找几个小时,似乎无法弄清楚这一点。我知道如何打印将当前用户放在 C 中的机器上,但是如何使用 C 打印出机器上存在的所有用户。(我正在运行 linux 机器)感谢您的帮助!:)
问问题
411 次
4 回答
2
机器的用户列在 /etc/passwd 中。过滤所有“人类”用户的好方法是
cat /etc/passwd | grep "/home" |cut -d: -f1
因为人类用户通常有一个主目录。
现在,要在 C 中调用它,您可以使用 popen。看一眼
man popen
于 2013-02-20T01:59:13.240 回答
2
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
int main(int argc, char ** argv)
{
// You can restrict the range of UIDs
// depending on whether you care about system users or real users
int minUID = 0;
int maxUID = 10000;
for (int i = minUID; i < maxUID; ++i)
{
struct passwd * p = getpwuid(i);
if (p != NULL)
printf("%d : %s\n", i, p->pw_name);
}
}
于 2013-02-20T02:00:51.670 回答
2
在 UNIX 机器上,使用pwent
一系列函数:
#include <sys/types.h>
#include <pwd.h>
int main() {
struct passwd *p;
while((p = getpwent())) {
printf("name: %s\n", p->pw_name);
}
}
这将查阅系统的权威用户数据库,不一定是/etc/passwd
.
于 2013-02-20T02:03:57.927 回答
0
在 BSD 上测试。
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
int main(int argc, char** argv) {
struct passwd *pwd;
while((pwd = getpwent())!=NULL) {
printf("%s\n",pwd->pw_name);
}
return 0;
}
于 2013-02-20T02:06:47.327 回答