?? 07.htm
字號:
<TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>fgetgrent,getrent,getgruid<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<grp.h><BR>#include<sys/types.h><BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>strcut group * getgrnam(const char * name);<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getgrnam()用來逐一搜索參數那么指定的組名稱,找到時便將該組的數據以group結構返回。group 結構請參考getgrent()。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>返回group結構數據,如果返回NULL則表示已無數據,或有錯誤發生。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>/* 取得adm的組數據*/<BR>#include<grp.h><BR>#include<sys/types.h><BR>main()<BR>{<BR>strcut group * data;<BR>int i=0;<BR>data = getgrnam(“adm”);<BR>printf(“%s:%s:%d:”,data->gr_name,data->gr_passwd,data->gr_gid);<BR>while(data->gr_mem[i])printf(“%s,”,data->gr_mem[i++]);<BR>printf(“\n”);<BR>}<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>adm:x:4:root,adm,daemon<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc101></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2><BR>getgroups(取得組代碼) </FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>initgroups,setgroup,getgid,setgid<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<unistd.h><BR>#include<sys/types.h><BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>int getgroups(int size,gid_t list[]);<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getgroup()用來取得目前用戶所屬的組代碼。參數size為list〔〕所能容納的gid_t 數目。如果參數size 值為零,此函數僅會返回用戶所屬的組數。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>返回組識別碼,如有錯誤則返回-1。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>錯誤代碼 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>EFAULT 參數list數組地址不合法。EINVAL 參數size值不足以容納所有的組。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<unistd.h><BR>#include<sys/types.h><BR>main()<BR>{<BR>gid_t list[500];<BR>int x,i;<BR>x = getgroups(0.list);<BR>getgroups(x,list);<BR>for(i=0;i<x;i++)<BR>printf(“%d:%d\n”,i,list[i]);<BR>}<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>0:00<BR>1:01<BR>2:02<BR>3:03<BR>4:04<BR>5:06<BR>6:10<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc102></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2><BR>getpw(取得指定用戶的密碼文件數據) </FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpwent<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<pwd.h><BR>#include<sys/types.h><BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>int getpw(uid_t uid,char *buf);<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpw()會從/etc/passwd中查找符合參數uid所指定的用戶賬號數據,找不到相關數據就返回-1。所返回的buf字符串格式如下:賬號:密碼:用戶識別碼(uid):組識別碼(gid):全名:根目錄:shell<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>返回0表示成功,有錯誤發生時返回-1。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>1. getpw()會有潛在的安全性問題,請盡量使用別的函數取代。<BR>2. 使用shadow的系統已把用戶密碼抽出/etc/passwd,因此使用getpw()取得的密碼將為“x”。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<pwd.h><BR>#include<sys/types.h><BR>main()<BR>{<BR>char buffer[80];<BR>getpw(0,buffer);<BR>printf(“%s\n”,buffer);<BR>}<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>root:x:0:0:root:/root:/bin/bash<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc103></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2><BR>getpwent(從密碼文件中取得賬號的數據) </FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpw,fgetpwent,getpwnam,getpwuid,setpwent,endpwent<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<pwd.h><BR>#include<sys/types.h><BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>strcut passwd * getpwent(void);<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpwent()用來從密碼文件(/etc/passwd)中讀取一項用戶數據,該用戶的數據以passwd 結構返回。第一次調用時會取得第一位用戶數據,之后每調用一次就會返回下一項數據,直到已無任何數據時返回NULL。<BR>passwd 結構定義如下<BR>struct passwd{<BR>char * pw_name; /*用戶賬號*/<BR>char * pw_passwd; /*用戶密碼*/<BR>uid_t pw_uid; /*用戶識別碼*/<BR>gid_t pw_gid; /*組識別碼*/<BR>char * pw_gecos; /*用戶全名*/<BR>char * pw_dir; /*家目錄*/<BR>char * pw_shell; /* 所使用的shell路徑*/<BR>};<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>返回passwd 結構數據,如果返回NULL 則表示已無數據,或有錯誤發生。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpwent()在第一次調用時會打開密碼文件,讀取數據完畢后可使用endpwent()來關閉該密碼文件。錯誤代碼ENOMEM 內存不足,無法配置passwd結構。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<pwd.h><BR>#include<sys/types.h><BR>main()<BR>{<BR>struct passwd *user;<BR>while((user = getpwent())!=0){<BR>printf(“%s:%d:%d:%s:%s:%s\n”,user->pw_name,user->pw_uid,user->pw_gid,<BR>user->pw_gecos,user->pw_dir,user->pw_shell);<BR>}<BR>endpwent();<BR>}<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>root:0:0:root:/root:/bin/bash<BR>bin:1:1:bin:/bin:<BR>daemon:2:2:daemon:/sbin:<BR>adm:3:4:adm:/var/adm:<BR>lp:4:7:lp:/var/spool/lpd:<BR>sync:5:0:sync:/sbin:/bin/sync<BR>shutdown:6:0:shutdown:/sbin:/sbin/shutdown<BR>halt:7:0:halt:/sbin:/sbin/halt<BR>mail:8:12:mail:/var/spool/mail:<BR>news:9:13:news:var/spool/news<BR>uucp:10:14:uucp:/var/spool/uucp:<BR>operator:11:0:operator :/root:<BR>games:12:100:games:/usr/games:<BR>gopher:13:30:gopher:/usr/lib/gopher-data:<BR>ftp:14:50:FTP User:/home/ftp:<BR>nobody:99:99:Nobody:/:<BR>xfs:100:101:X Font Server: /etc/Xll/fs:/bin/false<BR>gdm:42:42:/home/gdm:/bin/bash<BR>kids:500:500: : /home/kids:/bin/bash<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋體 size=2><A name=linuxc104></A></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2><BR>getpwnam(從密碼文件中取得指定賬號的數據) </FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpw,fgetpwent,getpwent,getpwuid<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>#include<pwd.h><BR>#include<sys/types.h><BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>struct passwd * getpwnam(const char * name);<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>getpwnam()用來逐一搜索參數name 指定的賬號名稱,找到時便將該用戶的數據以passwd結構返回。passwd結構請參考getpwent()。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD> <TD> <DIV align=left><FONT face=宋體 size=2>返回passwd 結構數據,如果返回NULL 則表示已無數據,或有錯誤發生。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -