<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## getutent ## 從utmp 文件中取得賬號登錄數據 ### 相關函數 ### getutent,getutid,getutline,setutent,endutent,pututline,utmpname ### 表頭文件 ### ``` #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有以下幾種類型: EMPTY 此為空的記錄。 RUN_LVL 記錄系統run-level的改變 BOOT_TIME 記錄系統開機時間 NEW_TIME 記錄系統時間改變后的時間 OLD_TINE 記錄當改變系統時間時的時間。 INIT_PROCESS 記錄一個由init衍生出來的進程。 LOGIN_PROCESS 記錄login進程。 USER_PROCESS 記錄一般進程。 DEAD_PROCESS 記錄一結束的進程。 ACCOUNTING 目前尚未使用。 exit_status結構定義 ``` struct exit_status { short int e_termination; /*進程結束狀態*/ short int e_exit; /*進程退出狀態*/ }; ``` timeval的結構定義請參考gettimeofday()。 相關常數定義如下: UT_LINESIZE 32 UT_NAMESIZE 32 UT_HOSTSIZE 256 ### 返回值 ### 返回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(); } ``` ### 執行 ### ``` /* 表示有三個root賬號分別登錄/dev/pts/0,/dev/pts/1,/dev/pts/2 */ 7 root pts/0 7 root pts/1 7 root pts/2 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看