📄 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>struct utmp * getutline (struct 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>getutline()用来从目前utmp文件的读写位置逐一往后搜索ut_type为USER_PROCESS 或LOGIN_PROCESS 的记录,而且ut_line 和ut->ut_line 相符。找到相符的记录便将该数据以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<utmp.h><BR>main()<BR>{<BR>struct utmp ut,*u;<BR>strcpy (ut.ut_line,”pts/1”);<BR>while ((u=getutline(&ut))){<BR>printf(“%d %s %s %s \n”,u->ut_type,u->ut_user,u->ut_line,u->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>7 root pts/1<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋体 size=2><A name=linuxc110></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>initgroups(初始化组清单) </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>setgrent,endgrent<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>int initgroups(const char *user,gid_t group);<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>initgroups()用来从组文件(/etc/group)中读取一项组数据,若该组数据的成员中有参数user时,便将参数group组识别码加入到此数据中。<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,错误码存于errno。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋体 size=2><A name=linuxc111></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>pututline(将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<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<utmp.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>void pututline(struct 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>pututline()用来将参数ut的utmp结构记录到utmp文件中。此函数会先用getutid()来取得正确的写入位置,如果没有找到相符的记录则会加入到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><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>需要有写入/var/run/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<utmp.h><BR>main()<BR>{<BR>struct utmp ut;<BR>ut.ut_type =USER_PROCESS;<BR>ut.ut_pid=getpid();<BR>strcpy(ut.ut_user,”kids”);<BR>strcpy(ut.ut_line,”pts/1”);<BR>strcpy(ut.ut_host,”www.gnu.org”);<BR>pututline(&ut);<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>/*执行范例后用指令who -l 观察*/<BR>root pts/0 dec9 19:20<BR>kids pts/1 dec12 10:31(www.gnu.org)<BR>root pts/2 dec12 13:33<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋体 size=2><A name=linuxc112></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>seteuid(设置有效的用户识别码) </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>setuid,setreuid,setfsuid<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></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 seteuid(uid_t euid);<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>seteuid()用来重新设置执行目前进程的有效用户识别码。在Linux下,seteuid(euid)相当于setreuid(-1,euid)。<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,错误代码存于errno<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>请参考setuid<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋体 size=2><A name=linuxc113></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>setfsgid(设置文件系统的组识别码) </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>setuid,setreuid,seteuid,setfsuid<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></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 setfsgid(uid_t fsgid);<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>setfsgid()用来重新设置目前进程的文件系统的组识别码。一般情况下,文件系统的组识别码(fsgid)与有效的组识别码(egid)是相同的。如果是超级用户调用此函数,参数fsgid 可以为任何值,否则参数fsgid必须为real/effective/saved的组识别码之一。<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,错误代码存于errno。<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>此函数为Linux特有。<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>EPERM 权限不够,无法完成设置。<BR></FONT></DIV></TD></TR> <TR> <TD vAlign=top width=80> <DIV align=right><BR><FONT face=宋体 size=2><A name=linuxc114></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>setfsuid(设置文件系统的用户识别码) </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>setuid,setreuid,seteuid,setfsgid<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></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 setfsuid(uid_t fsuid);<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>setfsuid()用来重新设置目前进程的文件系统的用户识别码。一般情况下,文件系统的用户识别码(fsuid)与有效的用户识别码(euid)是相同的。如果是超级用户调用此函数,参数fsuid可以为任何值,否则参数fsuid必须为real/effective/saved的用户识别码之一。<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,错误代码存于errno<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=宋
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -