getpwent()

getpwent()是一種函式,功能是用來從密碼檔案(/etc/passwd)中讀取一項用戶數據,該用戶的數據以passwd 結構返回。

基本介紹

  • 外文名:getpwent()
  • 頭檔案:#include<pwd.h>
  • 原型:strcut passwd * getpwent
  • 說明:用來從密碼檔案中讀取用戶數據
頭檔案,函式原型,說明,返回值,範例,

頭檔案

#include<pwd.h>
#include<sys/types.h>

函式原型

strcut passwd * getpwent(void);

說明

getpwent()用來從密碼檔案(/etc/passwd)中讀取一項用戶數據,該用戶的數據以passwd 結構返回。第一次調用時會取得第一位用戶數據,之後每調用一次就會返回下一項數據,直到已無任何數據時返回NULL。
passwd 結構定義如下
struct passwd{
char * pw_name; /*用戶賬號*/
char * pw_passwd; /*用戶密碼*/
uid_t pw_uid; /*用戶識別碼*/
gid_t pw_gid; /*組識別碼*/
char * pw_gecos; /*用戶全名*/
char * pw_dir; /*家目錄*/
char * pw_shell; /* 所使用的shell路徑*/
};
getpwent()在第一次調用時會打開密碼檔案,讀取數據完畢後可使用endpwent()來關閉該密碼檔案。錯誤代碼ENOMEM 記憶體不足,無法配置passwd結構。

返回值

返回passwd 結構數據,如果返回NULL 則表示已無數據,或有錯誤發生。

範例

#include<pwd.h>
#include<sys/types.h>
main()
{
struct passwd *user;
while((user = getpwent())!=0){
printf(“%s:%d:%d:%s:%s:%s\n”,user->pw_name,user-
>pw_uid,user->pw_gid,
user->pw_gecos,user->pw_dir,user->pw_shell);
}
endpwent();
}
執行 root:0:0:root:/root:/bin/bash
bin:1:1:bin:/bin:
daemon:2:2:daemon:/sbin:
adm:3:4:adm:/var/adm:
lp:4:7:lp:/var/spool/lpd:
sync:5:0:sync:/sbin:/bin/sync
shutdown:6:0:shutdown:/sbin:/sbin/shutdown
halt:7:0:halt:/sbin:/sbin/halt
mail:8:12:mail:/var/spool/mail:
news:9:13:news:var/spool/news
uucp:10:14:uucp:/var/spool/uucp:
operator:11:0:operator :/root:
games:12:100:games:/usr/games:
gopher:13:30:gopher:/usr/lib/gopher-data:
ftp:14:50:FTP User:/home/ftp:
nobody:99:99:Nobody:/:
xfs:100:101:X Font Server: /etc/Xll/fs:/bin/false
gdm:42:42:/home/gdm:/bin/bash
kids:500:500: : /home/kids:/bin/bash

相關詞條

熱門詞條

聯絡我們