⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 07.htm

📁 Linux系统函数用法的详细介绍
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <DIV align=right><FONT face=宋体 size=2>范例 </FONT></DIV></TD>    <TD>      <DIV align=left><FONT face=宋体       size=2>/*取得root账号的识别码和根目录*/<BR>#include&lt;pwd.h&gt;<BR>#include&lt;sys/types.h&gt;<BR>main()<BR>{<BR>struct       passwd *user;<BR>user =       getpwnam(“root”);<BR>printf(“name:%s\n”,user-&gt;pw_name);<BR>printf(“uid:%d\n”,user-&gt;pw_uid);<BR>printf(“home:%s\n”,user-&gt;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&lt;pwd.h&gt;<BR>#include&lt;sys/types.h&gt;<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&lt;pwd.h&gt;<BR>#include&lt;sys/types.h&gt;<BR>main()<BR>{<BR>struct       passwd *user;<BR>user=       getpwuid(6);<BR>printf(“name:%s\n”,user-&gt;pw_name);<BR>printf(“uid:%d\n”,user-&gt;pw_uid);<BR>printf(“home:%s\n”,user-&gt;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>        <DIV align=right><BR><FONT face=宋体 size=2><A       name=linuxc106></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>getuid(取得真实的用户识别码)     </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>geteuid,setreuid,setuid<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&lt;unistd.h&gt;<BR>#include&lt;sys/types.h&gt;<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>uid_t     getuid(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>getuid()用来取得执行目前进程的用户识别码。<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>用户识别码<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>main()<BR>{ <BR>printf(“uid is       %d\n”,getuid());<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>uid is 0       /*当使用root身份执行范例程序时*/<BR></FONT></DIV></TD></TR>  <TR>    <TD vAlign=top width=80>        <DIV align=right><BR><FONT face=宋体 size=2><A       name=linuxc107></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>getutent(从utmp 文件中取得账号登录数据)       </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>getutent,getutid,getutline,setutent,endutent,pututline,utmpname<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&lt;utmp.h&gt;<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 utmp       *getutent(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>getutent()用来从utmp       文件(/var/run/utmp)中读取一项登录数据,该数据以utmp       结构返回。第一次调用时会取得第一位用户数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。<BR>utmp结构定义如下<BR>struct       utmp<BR>{<BR>short int ut_type; /*登录类型*/<BR>pid_t ut_pid;       /*login进程的pid*/<BR>char ut_line[UT_LINESIZE];/*登录装置名,省略了“/dev/”*/<BR>char       ut_id[4]; /* Inittab ID*/<BR>char ut_user[UT_NAMESIZE];/*登录账号*/<BR>char       ut_host[UT_HOSTSIZE];/*登录账号的远程主机名称*/<BR>struxt exit_status ut_exit;/*       当类型为DEAD_PROCESS时进程的结<BR>束状态*/<BR>long int ut_session; /*Sessioc       ID*/<BR>struct timeval ut_tv; /*时间记录*/<BR>int32_t ut_addr_v6[4];       /*远程主机的网络地址*/<BR>char __unused[20]; /*       保留未使用*/<BR>};<BR>ut_type有以下几种类型:<BR>EMPTY 此为空的记录。<BR>RUN_LVL       记录系统run-level的改变<BR>BOOT_TIME 记录系统开机时间<BR>NEW_TIME       记录系统时间改变后的时间<BR>OLD_TINE 记录当改变系统时间时的时间。<BR>INIT_PROCESS       记录一个由init衍生出来的进程。<BR>LOGIN_PROCESS 记录login进程。<BR>USER_PROCESS       记录一般进程。<BR>DEAD_PROCESS 记录一结束的进程。<BR>ACCOUNTING       目前尚未使用。<BR>exit_status结构定义<BR>struct exit_status<BR>{<BR>short int       e_termination; /*进程结束状态*/<BR>short int e_exit;       /*进程退出状态*/<BR>};<BR>timeval的结构定义请参考gettimeofday()。<BR>相关常数定义如下:<BR>UT_LINESIZE       32<BR>UT_NAMESIZE 32<BR>UT_HOSTSIZE 256<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>返回utmp 结构数据,如果返回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>getutent()在第一次调用时会打开utmp       文件,读取数据完毕后可使用endutent()来关闭该utmp文件。<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&lt;utmp.h&gt;<BR>main()<BR>{<BR>struct utmp       *u;<BR>while((u=getutent())){<BR>if(u-&gt;ut_type = =       USER_PROCESS)<BR>printf(“%d %s %s %s       \n”,u-&gt;ut_type,u-&gt;ut_user,u-&gt;ut_line,u-&gt;ut_host);<BR>}<BR>endutent();<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账号分别登录/dev/pts/0,/dev/pts/1,/dev/pts/2 */<BR>7 root pts/0<BR>7       root pts/1<BR>7 root pts/2<BR></FONT></DIV></TD></TR>  <TR>    <TD vAlign=top width=80>        <DIV align=right><BR><FONT face=宋体 size=2><A       name=linuxc108></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>getutid(从utmp 文件中查找特定的记录)       </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>getutent,getutline<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&lt;utmp.h&gt;<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 utmp *getutid(strcut utmp       *ut);<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>getutid()用来从目前utmp       文件的读写位置逐一往后搜索参数ut指定的记录,如果ut-&gt;ut_type       为RUN_LVL,BOOT_TIME,NEW_TIME,OLD_TIME 其中之一则查找与ut-&gt;ut_type       相符的记录;若ut-&gt;ut_type       为INIT_PROCESS,LOGIN_PROCESS,USER_PROCESS或DEAD_PROCESS其中之一,则查找与ut-&gt;ut_id相符的记录。找到相符的记录便将该数据以utmp       结构返回。utmp结构请参考getutent()。<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>返回utmp 结构数据,如果返回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&lt;utmp.h&gt;<BR>main()<BR>{<BR>struct utmp       ut,*u;<BR>ut.ut_type=RUN_LVL;<BR>while((u=       getutid(&amp;ut))){<BR>printf(“%d %s %s       %s\n”,u-&gt;ut_type,u-&gt;ut_user,u-&gt;ut_line,u-&gt;ut_host);<BR>}<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>1 runlevel -<BR></FONT></DIV></TD></TR>  <TR>    <TD vAlign=top width=80>        <DIV align=right><BR><FONT face=宋体 size=2><A       name=linuxc109></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>getutline(从utmp 文件中查找特定的记录)       </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>getutent,getutid,pututline<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&lt;utmp.h&gt;<BR></FONT></DIV></TD></TR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -