📄 07.html
字号:
</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">
<div align="right"><font face='宋体' size='2'> 范例 </font> </div>
</td>
<td>
<div align="left"><font face='宋体' size='2'> /*取得root账号的识别码和根目录*/<br>
#include<pwd.h><br>
#include<sys/types.h><br>
main()<br>
{<br>
struct passwd *user;<br>
user = getpwnam(“root”);<br>
printf(“name:%s\n”,user->pw_name);<br>
printf(“uid:%d\n”,user->pw_uid);<br>
printf(“home:%s\n”,user->pw_dir);<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'> name:root<br>
uid:0<br>
home:/root<br>
</font> </div>
</td>
</tr>
<tr>
<td valign="top" width="80">
<div align="right"><br>
<font face='宋体' size='2'><a name=linuxc105></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>
getpwuid(从密码文件中取得指定uid 的数据) </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,getpwnam<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 * getpwuid(uid_t
uid);<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'> getpwuid()用来逐一搜索参数uid 指定的用户识别码,找到时便将该用户的数据以结构返回结构请参考将该用户的数据以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">
<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>
user= getpwuid(6);<br>
printf(“name:%s\n”,user->pw_name);<br>
printf(“uid:%d\n”,user->pw_uid);<br>
printf(“home:%s\n”,user->pw_dir);<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'> name:shutdown<br>
uid:6<br>
home:/sbin<br>
</font> </div>
</td>
</tr>
<tr>
<td valign="top" width="80">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -