freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

h20xx032045_一種遠程管理linux系統(tǒng)工具的設計與實現(xiàn)-在線瀏覽

2024-11-08 07:31本頁面
  

【正文】 初 是 GIMP(GNU 圖形處理程序)開發(fā)的控件集合,然后它不斷擴展,直到今天被用 于大量的應用程序當中。 Gtk 將 glib 主循環(huán)連接到 Gdk 的 X 服務器,并提供一個方便的接口。 gtk_main()函數的所有功能都是監(jiān)視 Gtk 程序和與 X 服務的連接,對同樣 的時間隊列起作用。所有 第 頁 共 33 頁 1 的 Gtk 程序都用這個技巧使應用程序正在運行時 main()函數被阻塞,直到用戶 通過點擊鼠標或鍵盤來產生一個信號,并通過該信號來調用相應的回調函數。 ( 1) 信號 控制權的傳遞是使用 信號 的方法。有一些信號是大多數構件都 具備的,比如 destory,還有一些是某些構件專有的,比如在按扭的 toggled 信號。 這由類似以下所示的函數實現(xiàn): Gint gtk_signal_connect(GtkObject Gchar *object, *name, GtkSignalFunc func, gpointer func_data )。 ( 2) 事件 除了上面的信號機制外,還有一些和 X事件機制相對應的事件。將回調函數連接到 X的某一個事件,需要使用 gtk_signal_connect函數,并使用事件名稱作為命名參數。 GdkEvent是 C中的聯(lián)合體結構,其類型依賴于發(fā)生的事件。將回調函數與一個事件連接起來,需要使用以下形式的函數: gtk_signal_connect( GTK_OBJECT(button), button_press_event GTK_SIGNAL_FUNC(button_press_callback), NULL) ?,F(xiàn)在,當鼠標移動到按鈕上方,鼠標按鈕 按下時,將調用 button_press_callback函數。 常用的 GTK 構件 GTK構件可以分為兩種。 絕大多數構件都是第一種構件,并且可以顯示在 GdkWindow窗口。但是它只可以容 納一個子構件,所以要讓 GtkWindow能容納更多的構件必須使用布局控件來布局。 用下面的構件向窗口中添加子構件: gtk_container_add (GTK_CONTAINER (window), widget)。這些構件可以有多個子構 件,它們的作 用就是管理布局。例如, GtkVBox將它的子構件在一個垂直的棧內排列。 GtkTable(表格構件 )是很常用的用于定位的構件。構件可以在網格中占據任意多個格子。 要將構件放到表格中,可以使用下列函數: void gtk_table_attach(GtkTable *table, GtkWidget *child, gint left_attach, gint right_attach, gint top_attach, gint bottom_attach, gint x options, gint yoptions, gint xpadding,gint ypadding )。它一般用于當 第 頁 共 33 頁 3 用戶點擊它時執(zhí)行某個動作,其使用和創(chuàng)建也相當簡單。按鈕創(chuàng)建以后就 可以用上面所講述的 GTK信號和回調函數或事件機制來實現(xiàn),當按扭按下或有其 他操作時候的回調函數來響應相應的函數或事件。它支持多種顏色以及多種 字體的文本,允許它們以任何需要的形式混合顯示,還有許多與 Emacs兼容 的文 本編輯命令。 創(chuàng)建新 Text構件只有一個函數: GtkWidget *gtk_text_new( GtkAdjustment *hadj,GtkAdjustment *vadj )。 為了在兩種操作模式之間進行切換,文本構件有以下函數: void gtk_text_set_editable( GtkText *text,gint editable )。插入時可以 指定文本的背景色、前景色和字體。 ( 5) 標簽構件 GtkLabel(標簽構件 )是 GTK中最常用的構件之一,實際上它很簡單。如果需要引發(fā)信號,可以將它放在 一個事件盒構件中,或放在按鈕構件中。 唯一的參數是要由標簽顯示字符串。 第一參數是前面創(chuàng)建的標簽構件 (用 GTK_LABEL()宏轉換 ),第二個參數是新 字符串。在字符串中放置換行符, 可以創(chuàng)建多行標簽。該構件在 GUI(圖形用戶接口 )編程中很常用。許多應用程序的 選項 對話框都使用了這個構件。 GtkWidget *gtk_notebook_new( void )。 l 在筆記本構件中前插頁面: void gtk_notebook_prepend_page(GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label )。子構件必須分別創(chuàng)建,一般是一個容器構件,比如說表格構件。分欄列表構件是多列列表構件,它有能力處理數千行的信息。 創(chuàng)建 GtkClist構件的方法和創(chuàng)建其他構件的方法類似。創(chuàng)建分欄列表的函數: GtkWidget *gtk_clist_new ( gint columns )。 創(chuàng)建列表后,需要向構件中添加一些要顯示和操作的數據,用下面的函數可 以向列表中添加一些數據行: gint gtk_clist_prepend( GtkCList *clist,gchar *text[] )。 用下面的函數可以刪除一些數據行: void gtk_clist_remove( GtkCList *clist,gint row )。 GtkCList構件是從容器 構件 GtkContainer派生的,它有容器所具有的一些信號,還有下面這些附加信號: 第 頁 共 33 頁 5 select_row:選中一行時引發(fā),該信號傳遞信息,依次是 GtkCList *clist、 gint row、 gint column、 GtkEventButton *event。傳遞的信息與上一個 信號一樣。所以,要將一個回調函數連接到 select_row信號上,回調函數應 該像下面這樣: void select_row_callback(GtkWidget *widget,gint row,gint column, GdkEventButton *event,gpointer data)。 以 上只是簡單介紹了本課題在客戶端界面編寫的時候可用到的 GTK庫函數, 但實際的 GTK比上面的操作還要復雜得多。也就是說通過一個單一的接口就 可以處理外圍設備和程序之間的通信。很多系統(tǒng)服務和應用服 務的配置文件都是以普通文件的形式存在 ,這些文件很容易通過 Linux 的系統(tǒng) 調用來配置和修改,也可以用文檔文件的修改方式來修改。文件讀取分 3 步完成:第一步是打 開要讀取的文件;第二步是把文件讀取到內存中去;第三步是關閉打開的文件。 其中參數 name 是要打開的函數名字; how 是打開的方式;返回值 1 為錯誤, 成功就返回一個文件描述符。 第 頁 共 33 頁 6 第 1個參數是打開的文件描述符,第 2 個參數是存儲文件數據的內存地址, 第 3個參數是讀取數據大小。 l 系統(tǒng)調用 write()函數將內存中的數據寫入到文件中去,函數原形: ssize_t resut = write(int fd,void *buff,zize_t amt)。第 1個參數是打開的文件描述符; 第 2個參數是要 寫入文件數據的內存地址;第 3 個參數是寫入文件的大小。 close() 能關閉打開的文件,其函數原形: int result = close(int fd)。參數是打開的文件描述符號。 進程和線程的使用 (1) Linux 進程 Linux 進程創(chuàng)建很特別。但是 Linux 不同,它創(chuàng)建的子進程具 有和父進程相同的數據、代碼段。還有一次是返回 0(子進程 )。系統(tǒng)調用 wait(amp。status)。 pthread_cearte()函數可以創(chuàng)建一個線程: int pthread_ceate(pthread_t *thread, pthread_attr_t *attr, void *(*func)(void*), void *arg)。本課題所用的協(xié)議是 TCP/IP 協(xié)議。 應用層協(xié)議 客戶應用程序 服務器應用程序 TCP TCP 協(xié)議 TCP IP IP 協(xié)議 IP 以太網驅動 以太網協(xié)議 以太網驅動 圖 1 網絡示意圖 簡單的網絡編程 (1) socket 函數 socket 函數功能是創(chuàng)建一個套接口描述符,并且指定希望的通信 協(xié)議 (使 用 IPV4 的 TCP,或者使用 IPV6 的 UPD 等 )。 其中 family 參數指明協(xié)議族, type 參數指明套接口類型, protocol 參數 為某個協(xié)議的常數。 (2) connect 函數 TCP 客戶程序用 connect 函數來發(fā)起和 TCP 服務程序的連接。 int connect(int sockfd, const sgruct sockaddr *servaddr, socklen_t addrlen)。當函數調用成功的時候返 回 0,出錯就返回 1。 int bind(int sockfd,const struct aockaddr *myadd,socklen_t addrlen)。調用成功返回 0,錯誤返回 1。 int listen(int sockfd,int backlog)。 (5) accept 函數 int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)。函數返 回值為一個非負的描述符表示成功,出錯為 1。也就是能和客戶端通 信的套接口。 (6)close 函數 套接口編程通常都需要一個 close 函數來關閉套接口 ,來中斷 TCP 的連接。 (7)send()函數 當連接建立了后自然就需要數據的傳送和接收, send()函數是用來想連接 的另外一端發(fā)送數據。 第 1個參數是已經連接的套接口的描述符,第 2 個參數是發(fā)送的數據的內 存地址,第 3 個參數是發(fā)送數據的大小,第 4 個參數是選項。 int recv(int sockfd,void *buf,int len,int flags) 第 1個參數是已經連接的套接口的描述符,第 2 個參 數是發(fā)送的數據的內 存地址,第 3 個參數是發(fā)送數據的大小,第 4 個參數是選項。客戶程序功能是界面的編寫,并和服務程序通信。服務器程序功能是接收客戶程序 的數據,并且通過收到的數據來完成系統(tǒng)或應用服務程序文件的配置。 main() 等待連接 輸入服務 器 IP 建立連接( TCP3 次握手) 連接界面 連接 成功 連接不成功 初始化數據 TCP 接口 用戶主界面 用戶操作 否 TCP 接口 退出 處理 請求 退出 是 結束 結束 圖 2 程序總體流程 服務程序 流程設計 服務程序功能有兩個:一是監(jiān)聽端口,接收數據和向客戶程序發(fā)送數據; 二是根據客戶程序發(fā)送過來的數據對文件修改,其流程圖如圖 3 所示。然后再 接收客戶程序的數據 (流程控制字符串 ),通過判斷字符串來控制服務程序的流 程 (圖 3 中的虛線部分 )。接收到了 adduser字符串就進 入添加用戶流程;接收到 deluser字符串就進入刪除用戶流程;接收到 scanuser字符串就進入了瀏覽用戶流程;接收到 property字符串就進 入到了修改用戶流程,系統(tǒng)用戶管理操作流程如圖 4 所示。 /etc/passwd 的用戶都是按照統(tǒng)一存格式來存儲,格式舉例如下: terrycheops:x:500:500:terrycheop:/home/terrycheops:/bin/bash 存儲中每個字段都用 : 隔開的,第一字段:用戶名(也被稱為登錄名), 在上面的例子中,我們看到用戶的用戶名是 terrycheops;第 二字段:口令,在 例子中我們看到的是一個 x,其實密碼已被映射到 /etc/shadow 文件中;第三字 段:用戶的 ID;第四字段:用戶組的 ID;第五字段:用戶名全稱,可選項;第六 字段:用戶的家目錄所在位置,該用戶的是 /home/terrycheops。 程序進入到了添加用戶后,接收客戶程序傳過來要添加的用戶信息 (用戶 名、密碼、全名 )。用 C 語言的流的讀操作打開文件 /etc/passwd,讀取 /etc/
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1