我一直在尋找小時,似乎無法弄清楚這一點。我知道如何打印將當前用戶放在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