我一直在寻找小时,似乎无法弄清楚这一点。我知道如何打印将当前用户放在C机器上,但是如何使用C打印机器上存在的所有用户(我正在运行Linux机器)。 :)打印出一台机器的所有用户在C
回答
在UNIX机器上,使用一系列功能:
#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-20 02:21:45
机器的用户列在/ etc/passwd中。过滤所有'人类'用户的好方法是做
cat /etc/passwd | grep "/home" |cut -d: -f1
作为人类用户通常有一个主目录。
现在,为了在C中调用它,你可以使用popen。看看
man popen
如果有一个API可以做到的话,应该避免使用'popen'。在这种情况下,'getpwent/getpwuid'更容易使用。 – nneonneo 2013-02-20 02:01:58
我不知道这些命令。 Thx nneonneo – Cristopher 2013-02-20 03:06:12
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
int main(int argc, char ** argv)
{
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);
}
}
在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;
}
- 1. C#AcroPDF总是在第一台打印机上打印
- 2. JAVA从所有Windows用户帐户检索所有打印机
- 3. 服务器打印发送给所有用户控制台
- 4. C#WPF Paginator打印机忽略用户的打印机选择
- 5. 打印机后台程序,在C#
- 6. Perl脚本将打印机从一台打印服务器重新映射到另一台打印服务器
- 7. 在我的工作中列出每个用户的所有网络打印机
- 8. 如何列出所有可用的打印机驱动程序,如C#中的添加打印机向导?
- 9. 将打印机从一台服务器复制到另一台
- 10. 使用VBScript将60台打印机映射到一位用户
- 11. 用于在多台打印机中打印的Shell脚本
- 12. 在客户端打印机上打印
- 13. Web打印多台打印机
- 14. 服务器生成的打印打印到最接近用户的打印机
- 15. 驾驶一台POS打印机通过USB在c#
- 16. as3列出所有可用的打印机
- 17. 如何使用* principal(c#)列出Active Directory中的所有打印机
- 18. C# - 想要为机器上的所有本地用户编辑打印机注册表设置
- 19. ASPX:在客户端打印机打印服务器端PDF
- 20. 打印在我的机器上有所不同v/s客户端
- 21. win32print和多台打印机
- 22. 使用PrintDocument打印到收据打印机不会打印所有内容
- 23. 打印时服务器是同一台机器
- 24. 将网络打印机添加到所有用户的脚本x64位打印服务器
- 25. 用C#打印一个带有打印机对话框的docx文件
- 26. 如何将同一文档打印到多台打印机
- 27. 我想客户端机器上打印水晶报表,在C#
- 28. 如何让所有浏览器/打印机的网页打印完全相同?
- 29. 打印出一个文本文件,使用默认打印机
- 30. 在POS打印机C#
您可以尝试从'/ etc/passwd'中读取并在第一个':'字符前打印令牌。但是这也会给你系统用户,并且不会为ldap用户工作。 – szmoore 2013-02-20 01:52:04