C语言中操作utmp文件的相关函数用法
C语言getutent()函数:从utmp文件中取得账号登录数据 #include <utmp.h> 定义函数: struct utmp *getutent(void); 函数说明:getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据,该数据以utmp 结构返回. 第一次调用时会取得第一位用户数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。 utmp 结构定义如下: struct utmp { short int ut_type; //登录类型 pid_t ut_pid; //login 进程的pid char ut_line[UT_LINESIZE]; //登录装置名,省略了"/dev/" char ut_id[4]; //Inittab ID char ut_user[UT_NAMESIZE]; //登录账号 char ut_host[UT_HOSTSIZE]; //登录账号的远程主机名称 struxt exit_status ut_exit; //当类型为DEAD_PROCESS 时进程的结束状态 long int ut_session; //Sessioc ID struct timeval ut_tv; //时间记录 int32_t ut_addr_v6[4]; //远程主机的网络地址 char __unused[20]; //保留未使用 }; ut_type 有以下几种类型:
exit_status 结构定义: struct exit_status { short int e_termination; //进程结束状态 short int e_exit; //进程退出状态 }; timeval 的结构定义请参考gettimeofday()。 相关常数定义如下:
返回值:返回 utmp 结构数据,如果返回NULL 则表示已无数据,或有错误发生. 附加说明:getutent()在第一次调用时会打开utmp 文件,读取数据完毕后可使用endutent()来关闭该utmp文件. 范例 #include <utmp.h> main() { struct utmp *u; while((u = getutent())) { if(u->ut_type == USER_PROCESS) printf("%d %s %s %s n",u->ut_type,u->ut_user,u->ut_line,u->ut_host); } endutent(); } 执行 C语言setutent()函数:从头读取utmp文件中的登录数据 #include <utmp.h> 定义函数: void setutent(void); 函数说明:setutent()用来将getutent()的读写地址指回utmp 文件开头。 C语言endutent()函数:关闭文件(关闭utmp文件) #include <utmp.h> 定义函数: void endutent(void); 函数说明:endutent()用来关闭由getutent 所打开的utmp 文件。 范例:请参考getutent(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |