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

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中&nbsp;rusers&nbsp;的部份可在&nbsp;CCSUN&nbsp;用&nbsp;&quot;&nbsp;man&nbsp;3&nbsp;rusers&nbsp;&quot;&nbsp;查,&nbsp;兹摘录&nbsp;<BR>如下:&nbsp;<BR>&nbsp;<BR>==================&gt;&nbsp;man&nbsp;3&nbsp;rusers&nbsp;的摘录&nbsp;&lt;==============&nbsp;<BR>NAME&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rnusers,&nbsp;rusers&nbsp;-&nbsp;return&nbsp;information&nbsp;about&nbsp;users&nbsp;&nbsp;on&nbsp;&nbsp;remote&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;machines&nbsp;<BR>&nbsp;<BR>DESCRIPTION&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rnusers()&nbsp;returns&nbsp;the&nbsp;number&nbsp;of&nbsp;users&nbsp;logged&nbsp;on&nbsp;to&nbsp;host&nbsp;&nbsp;(-1&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;it&nbsp;&nbsp;cannot&nbsp;&nbsp;determine&nbsp;&nbsp;that&nbsp;number).&nbsp;&nbsp;rusers()&nbsp;fills&nbsp;the&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utmpidlearr&nbsp;structure&nbsp;with&nbsp;data&nbsp;about&nbsp;host,&nbsp;and&nbsp;returns&nbsp;0&nbsp;if&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;successful.&nbsp;<BR>&nbsp;<BR>PROGRAMMING&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&lt;rpcsvc/rusers.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;===&nbsp;查&nbsp;struct&nbsp;的地方&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rnusers(host)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*host&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rusers(host,&nbsp;up)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*host&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;utmpidlearr&nbsp;*up;&nbsp;<BR>==========================================================&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由於以上的&nbsp;manual&nbsp;中并没有指出&nbsp;utmpidlearr&nbsp;的结构型态如何,&nbsp;<BR>因此我们必须列出我们所需要的&nbsp;head&nbsp;file&nbsp;资料以取得我们要的&nbsp;<BR>utmpidlearr&nbsp;结构.&nbsp;以下是我的搜寻所得:&nbsp;<BR>&nbsp;<BR>==================&gt;&nbsp;utmpidlearr&nbsp;重要资料&nbsp;&lt;=================&nbsp;<BR>struct&nbsp;utmpidle&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;utmp&nbsp;ui_utmp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;ui_idle;&nbsp;<BR>};&nbsp;<BR>&nbsp;<BR>struct&nbsp;utmpidlearr&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;utmpidle&nbsp;**uia_arr;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;uia_cnt;&nbsp;<BR>};&nbsp;<BR>&nbsp;<BR>struct&nbsp;utmp&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;ut_line[8];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;tty&nbsp;name&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;ut_name[8];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;user&nbsp;id&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;ut_host[16];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;host&nbsp;name,&nbsp;if&nbsp;remote&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;ut_time;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;time&nbsp;on&nbsp;*/&nbsp;<BR>};&nbsp;<BR>============================================================&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有了这些资料以後,&nbsp;再看前面的程式就比较易懂了.&nbsp;(&nbsp;若因程式的&nbsp;<BR>变数命名太差,&nbsp;或流程太混乱,&nbsp;请见谅.&nbsp;因这一部份在完成之初又不断加新&nbsp;<BR>的功能,&nbsp;而不是一次完成的.&nbsp;)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程式中的&nbsp;buffer&nbsp;这个变数储存欲送出的资料,&nbsp;其格式为:&nbsp;<BR>==================================================================&nbsp;<BR>工作站名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;login&nbsp;人数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;符合资料的人数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;帐号及其上机状态&nbsp;<BR>any&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;any&nbsp;bytes&nbsp;<BR>==================================================================&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以下面&nbsp;FindMan&nbsp;的输出为例说明:&nbsp;<BR>=====================&gt;&nbsp;FindMan&nbsp;部份输出&nbsp;&lt;=====================&nbsp;<BR>ccsun7:&nbsp;<BR>u813xx07&nbsp;-----&gt;&nbsp;xxxxxxxxxxx&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ttyq0&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tue&nbsp;Apr&nbsp;27&nbsp;23:56:53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxxuling.Dorm10.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ttyp1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wed&nbsp;Apr&nbsp;28&nbsp;01:46:29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxxuling.Dorm10.&nbsp;<BR>&nbsp;<BR>u802xx23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chen2&nbsp;xxxxxxxx&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ttyr6&nbsp;&nbsp;&nbsp;31:47&nbsp;&nbsp;&nbsp;Mon&nbsp;Apr&nbsp;26&nbsp;18:47:17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;140.113.1xx.177:&nbsp;<BR>&nbsp;<BR>ccsun16:&nbsp;<BR>u813xx16&nbsp;-----&gt;&nbsp;xxxxxxxxxxx&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ttyp1&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wed&nbsp;Apr&nbsp;28&nbsp;01:46:29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxxmy.DormChu.NC&nbsp;<BR>==============================================================&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中工作站名不限&nbsp;byte&nbsp;数,&nbsp;接收端以&nbsp;&quot;:\n&quot;&nbsp;判断此部份的资料&nbsp;<BR>结束与否.&nbsp;当第二部份为&nbsp;0&nbsp;时即填入&nbsp;-1&nbsp;表示无人,&nbsp;与资料比对後找不到&nbsp;<BR>人亦如此.&nbsp;check&nbsp;函数即是处理与资料比对的工作,&nbsp;FindMan&nbsp;是与&nbsp;.look&nbsp;<BR>比对,&nbsp;ScanGirl&nbsp;与&nbsp;girl&nbsp;的资料档比对.&nbsp;check&nbsp;的函数传回&nbsp;gcount、&nbsp;<BR>gname、gidx&nbsp;三个变数.&nbsp;gcount&nbsp;即是&nbsp;match&nbsp;的人数,&nbsp;gname&nbsp;是从&nbsp;rusers&nbsp;<BR>传回的资料档稍作修改&nbsp;(&nbsp;重复的帐号改成&nbsp;&quot;repeat&quot;&nbsp;)&nbsp;而成.&nbsp;而&nbsp;gidx&nbsp;是&nbsp;<BR>rusers&nbsp;传回资料的排序後的&nbsp;index.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从&nbsp;check&nbsp;函数传回的&nbsp;gname、gidx&nbsp;构成&nbsp;buffer&nbsp;阵列最後的资料.&nbsp;<BR>即&nbsp;&quot;帐号及其上机状态&quot;&nbsp;部份.&nbsp;全部完成後即将资料送出.&nbsp;由於&nbsp;check&nbsp;函数&nbsp;<BR>并不难写,&nbsp;故不列出.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由於篇幅及时间所限,&nbsp;这次只讲&nbsp;pitch&nbsp;函数,&nbsp;其它以後再继续,&nbsp;<BR>下期见!!&nbsp;8-)&nbsp;<BR>&nbsp;<BR>—————————————————————————————————&nbsp;<BR>FindMan&nbsp;关闭启示:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;近来&nbsp;CCSUN&nbsp;的使用率大幅增加&nbsp;,&nbsp;使得&nbsp;CCSUN&nbsp;<BR>的&nbsp;Load&nbsp;高居不下,&nbsp;我的&nbsp;FindMan&nbsp;公用程式只有在&nbsp;Load&nbsp;很轻的&nbsp;<BR>SUN&nbsp;上测试过&nbsp;(&nbsp;0&nbsp;到&nbsp;2&nbsp;),&nbsp;没想到最近&nbsp;Load&nbsp;重的&nbsp;SUN&nbsp;(&nbsp;7&nbsp;以上&nbsp;)&nbsp;<BR>上执行时,&nbsp;我程式中加快搜寻速度的部份竟成为致命伤.&nbsp;&nbsp;由於一&nbsp;<BR>次开二十个程序,&nbsp;若不幸因电脑异常,&nbsp;则大部分程序会停住而无法离开,&nbsp;<BR>使电脑&nbsp;Load&nbsp;更形加重,&nbsp;也令系统管理者困扰.&nbsp;在我花了十数小时不断&nbsp;<BR>改程式後(&nbsp;包括加上&nbsp;Alarm&nbsp;Signal&nbsp;控制执行时间&nbsp;),&nbsp;终於还是不能克服&nbsp;<BR>Load&nbsp;重时的异常状况.&nbsp;看来,&nbsp;我的程式理念&nbsp;(&nbsp;以多个程序平行处理来增&nbsp;<BR>快速度&nbsp;)&nbsp;只能在人数少的工作站或特殊的电脑才能用.&nbsp;有志於发展应用程&nbsp;<BR>式的同学,&nbsp;切记这个教训.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由於旧的&nbsp;FindMan&nbsp;程式有时会出状况,&nbsp;我已经将它去掉,&nbsp;<BR>以後有空时再写新的单一程序之&nbsp;FindMan.&nbsp;虽然程式已撤掉,&nbsp;但本文可当&nbsp;<BR>成纯为讨论程式设计,&nbsp;故仍继续下去.&nbsp;<BR>—————————————————————————————————&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

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