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

正文內(nèi)容

一種遠(yuǎn)程管理linux系統(tǒng)工具的設(shè)計(jì)與實(shí)現(xiàn)—免費(fèi)計(jì)算機(jī)(文件)

 

【正文】 ux 系統(tǒng)讀取文件內(nèi)容通過(guò)系統(tǒng)調(diào)用 read()函數(shù)來(lái)實(shí)現(xiàn),函數(shù)原形:ssize_t numread = read(int fd,void *buff,size_t qty)。這個(gè)系統(tǒng)將調(diào)用 buff 的數(shù)據(jù)寫(xiě)到文件中。這個(gè)系統(tǒng)調(diào)用會(huì)關(guān)閉進(jìn)程和文件之間的連接。很多其他操作都提供了產(chǎn)生進(jìn)程的機(jī)制,在新的進(jìn)程空間中創(chuàng)建進(jìn)程,讀取可執(zhí)行文件。在使用 fork()函數(shù)創(chuàng)建進(jìn)程的時(shí)候經(jīng)常父進(jìn)程等待子進(jìn)程結(jié)束。(2) Linux 線程進(jìn)程為線程提供了運(yùn)行環(huán)境,多個(gè)函數(shù)可以同時(shí)運(yùn)行,但是他們都是運(yùn)行在相同的進(jìn)程中的。如果客戶(hù)和服務(wù)器處于同一以太網(wǎng),如圖 1 所示。函數(shù)調(diào)用成功時(shí)候返回一個(gè)非負(fù)的描述符。sockfd 是有 socket 函數(shù)返回的一個(gè)套接口描述符,第 2 個(gè)和第 3 個(gè)參數(shù)分別是一個(gè)指向套接口地址結(jié)構(gòu)指針和結(jié)構(gòu)的大小。第 2 個(gè)參數(shù)是一個(gè)指向特定協(xié)議的地址結(jié)構(gòu)的指針,第 3 個(gè)參數(shù)是該地址結(jié)構(gòu)的長(zhǎng)度。本函數(shù)通常都是在調(diào)用 socket 和 bind 這兩個(gè)函數(shù)之后。這里需要指出的是參數(shù)的描述符為監(jiān)聽(tīng)套接口,就是在等待連接的時(shí)候還沒(méi)有建立連接的套接口,而返回值是連接的新的套接口。int close(int sockfd)。(8)recv()函數(shù)數(shù)據(jù)發(fā)送到接收端了后,就可以用 recv()函數(shù)來(lái)接收由發(fā)送端發(fā)送過(guò)來(lái)的數(shù)據(jù)了。采用 GTK編寫(xiě)界面,采用 Sock 編程實(shí)現(xiàn)通信。圖 3 顯示了服務(wù)程序的流程,accept()是監(jiān)聽(tīng)端口,等待客戶(hù)程序的連接,連接建立好后 init_cli()函數(shù)從配置文件讀取服務(wù)器的當(dāng)前配置文件數(shù)據(jù),然后再發(fā)送到客戶(hù)程序,讓客戶(hù)程序通過(guò)這些數(shù)據(jù)來(lái)初始化界面。dnsconfig vsftpcongroup_control()InitAction ()Net_DNS_Config ()Apache_Config ()Ftp_Config ()sysconfig apachecongroup程序入口sock()bind()listen()accep()t()一直阻塞到客戶(hù)連接到達(dá)連接建立TCP3 次握手init_cli ()userrecv ()對(duì)字符判斷exitclose ()user_control()字符串判斷處理圖 4 用戶(hù)操作流程對(duì)用戶(hù)的操作是添加、刪除和修改用戶(hù),Linux 用戶(hù)都是記錄在/etc/passwd 文件中,把 temp 的數(shù)據(jù)fputs()到文件退出用戶(hù)操作到圖 3 的 recv()exitadduser scauserpropertyfclose()fopen()把 temp 中的數(shù)據(jù) fputs()到文件中fputs(str)fopen()是否否是把 temp 中的數(shù)據(jù) fputs()到文件中把讀取數(shù)據(jù)存到 2 維數(shù)組 temp 中把 str 存到 2 維數(shù)組 temp 中fclose()fopen()相同接收的字符和讀取字符不同否 為空把讀取數(shù)據(jù)存到 2 維數(shù)組temp 中fopen()fget()為空f(shuō)open()把接受的數(shù)據(jù)格式化存儲(chǔ)在字符串str 中fclose()把接受的數(shù)據(jù)格式化存儲(chǔ)在字符串str 中fopen()fget()user_control()recv()字符recv() recv() recv()fopen()fget() send()fget()為空相同把讀取數(shù)據(jù)存到 2 維數(shù)組temp 中接收的字符和讀取字符不同對(duì)用戶(hù)添加、刪除和修改都是通過(guò)修改/etc/passwd 文件來(lái)實(shí)現(xiàn)。把客戶(hù)程序發(fā)送過(guò)來(lái)的用戶(hù)密碼用 MD5 算法加密,把加密后的密碼和用戶(hù)其他數(shù)據(jù)按照/etc/passwd 的格式復(fù)制到字符串變量(str)中。用 C 中流的操作打開(kāi)文件/etc/passwd,判斷讀取的數(shù)據(jù),當(dāng)要?jiǎng)h除的用戶(hù)名和讀取的用戶(hù)名一致時(shí)就不把這個(gè)用戶(hù)信息復(fù)制到二維數(shù)組(temp);讀取用戶(hù)名和刪除用戶(hù)名不一樣就把讀取數(shù)據(jù)復(fù)制到 temp 中。以 C 語(yǔ)言中流的操作打開(kāi)并且讀取文件/etc/passwd 的數(shù)據(jù),判斷讀取的數(shù)據(jù),當(dāng)要修改的用戶(hù)名和讀取的用戶(hù)名一致時(shí)把 str 數(shù)據(jù)復(fù)制到二維數(shù)組(temp);讀取用戶(hù)名和修改的用戶(hù)名不一致時(shí)就把讀取數(shù)據(jù)復(fù)制到 temp 中。etc/group 文件是用戶(hù)組的配置文件,內(nèi)容包括用戶(hù)和用戶(hù)組,并且能顯示出用戶(hù)是歸屬哪個(gè)用戶(hù)組或哪幾個(gè)用戶(hù)組,因?yàn)橐粋€(gè)用戶(hù)可以歸屬一個(gè)或多個(gè)不同的用戶(hù)組;同一用戶(hù)組的用戶(hù)之間具有相似的特征。在打開(kāi)文件/etc/group 把 temp 的數(shù)據(jù)寫(xiě)到文件中去,最后把 str 寫(xiě)入到文件中,關(guān)閉文件,這樣就實(shí)現(xiàn)了組的添加。然后打開(kāi)/etc/group 文件,讀取文件的數(shù)據(jù),當(dāng)讀取的數(shù)據(jù)和發(fā)送過(guò)來(lái)的組名一樣,就把 str 復(fù)制到 temp 中,其它都把讀取的數(shù)據(jù)復(fù)制到 temp 中,關(guān)閉打開(kāi)的文件。用戶(hù)組操作的流程如圖 5 所示。判斷字符串的第 1 個(gè)字符,如果是 1 的話就調(diào)用系統(tǒng)調(diào)用 link()把/etc/InitAction () recv ()第 1 個(gè)字符10link(“/etc/”, “/etc/”)unlink(“/etc/d”)第 2 個(gè)字符10link(“/etc/”,“/etc/”)unlink(“/etc/d”)第 3 個(gè)字符10link(“/etc/”, /etc/”)unlink(“/etc/S80sendmail”)第 4 個(gè)字符10link(“/etc/”, “/etc/”)unlink(“/etc/S65dhcpd”)第 5 個(gè)字符10link(“/etc/”, “/etc/”)unlink(“/etc/S91smb”)退出系統(tǒng)啟動(dòng)服務(wù)管理到圖3 的 recv()/etc/;如果字符是 0 就調(diào)用 unlink()取消/etc/。最后再判斷第 5 個(gè)字符,是 1 就把文件/etc/。進(jìn)入該模塊后,服務(wù)程序會(huì)接收一個(gè)客戶(hù)程序發(fā)送的數(shù)據(jù),該數(shù)據(jù)用來(lái)控制 DNS 模塊的流程,其流程如圖 7 所示。添加 domian 操作先接收客戶(hù)程序發(fā)送過(guò)來(lái)的數(shù)據(jù)(要添加的 domain 名,IP 和 zone 名),然后判斷/var/named/chroot/etc/ 中是否有這個(gè) zone 存在,沒(méi)有就發(fā)送“zone name is not exist”到客戶(hù)程序,如果有就得到其數(shù)據(jù)文件名字。Apache 服務(wù)停止、啟動(dòng)和重啟操作是通過(guò) exec 調(diào)用 Apache 停止、啟動(dòng)和重啟的shell 腳本來(lái)完成的。查看錯(cuò)誤日志操作,讀取錯(cuò)誤日志中的數(shù)據(jù),在把數(shù)據(jù)發(fā)送到客戶(hù)程序。然后在讀取環(huán)境變量,然后向客戶(hù)程序發(fā)送操作結(jié)果。在用戶(hù)界面方面,采用 GTK 編程來(lái)建立用戶(hù)界面,把實(shí)現(xiàn)的功能接口通過(guò)界面的方式提供給用戶(hù),讓用戶(hù)來(lái)進(jìn)行相關(guān)的操作。在模塊劃分方面。除了用 GTK 編寫(xiě)界面以外還要用到 SOCK 編程來(lái)進(jìn)行和服務(wù)器端的 TCP 連接的建立。命令行中傳遞過(guò)來(lái)的任何參數(shù),只要是它能識(shí)別的,都會(huì)從列表中刪除,并且修改argc和argv的值,就像這些參數(shù)從不存在一樣,然后應(yīng)用程序分析剩余的參數(shù)。void CForm(int *sock){ GtkWidget *exitButt,*clloButt,*clloLabl。 mainWin = gtk_window_new(GTK_WINDOW_TOPLEVEL)。main()gtk_init()CForm()按下連接按鈕sock()connect()連接建立TCP3 次握手連接成功否是主界面 clloButt = gtk_button_new_with_label(connect)。 gtk_table_set_row_spacing(GTK_TABLE(table),1,10)。 text = gtk_entry_get_text((GtkEntry *)textbox)。 gtk_table_attach_defaults((GtkTable*)table,exitButt,0,2,2,3)。 gtk_signal_connect(GTK_OBJECT(mainWin),destroy,NULL,NULL)。 gtk_widget_show(exitButt)。 gtk_widget_show(table)。這里就不詳細(xì)介紹了。不成功就返回到連接界面。 text = gtk_entry_get_text((GtkEntry *)textbox)。 mainform(sock)。圖 11 主界面的大概流程圖主窗體有各個(gè)功能模塊的操作頁(yè)面,程序主界面如圖 12 所示。圖 13 用戶(hù)操作界面 添加用戶(hù):當(dāng)用戶(hù)按了添加用戶(hù)按鈕后,就調(diào)用了 User_Add()函數(shù)對(duì)這個(gè)事件來(lái)響應(yīng)。讓服務(wù)器端通過(guò)傳遞過(guò)來(lái)的數(shù)據(jù)實(shí)現(xiàn)添加用戶(hù)。圖 15 添加用戶(hù)返回刪除用戶(hù):選種了列表中的要?jiǎng)h除的用戶(hù),這個(gè)時(shí)候程序會(huì)調(diào)用selection_call_back()函數(shù)。再接收服務(wù)程序發(fā)送過(guò)來(lái)的操作結(jié)果,顯示給用戶(hù)。圖 16 用戶(hù)屬性界面OK 按鈕所觸發(fā)的事件是先向服務(wù)器發(fā)送一個(gè)“property”字符串,然后讀取文本框中的數(shù)據(jù),把這些數(shù)據(jù)一起發(fā)送給服務(wù)程序。(2) 用戶(hù)組的操作:具有某種共同特征的用戶(hù)集合起來(lái)就是用戶(hù)組(Group) 。組的操作的界面如圖 17 所示。刪除組:刪除組的操作大概過(guò)程和刪除用戶(hù)相似,也是在選中了要?jiǎng)h除的組后,調(diào)用group_selection_call_back()函數(shù),來(lái)把組的組名等信息存儲(chǔ)在一個(gè)全局變量中。刷新組:當(dāng)刷新按鈕被按下了后就調(diào)用 group_fresh_button_click ()函數(shù)。操作界面如圖 18 所示。這些按鈕所對(duì)應(yīng)的事件是設(shè)置其 Active 屬性。(4) DNS 服務(wù)管理操作DNS 服務(wù)是一個(gè) IP 到域名的轉(zhuǎn)換服務(wù),其配置界面如圖 19 所示。添加 zone:添加 zone 按鈕所對(duì)應(yīng)的事件,調(diào)用 main_dns_addzone_click()函數(shù),然后建立一個(gè)臨時(shí)的窗體,用來(lái)記錄要?jiǎng)?chuàng)建的 zone 名字和類(lèi)型。刪除 zone:當(dāng)用戶(hù)選用了一個(gè)頂樹(shù),把樹(shù)的名字傳遞給一個(gè)全局變量中,然后向服務(wù)器發(fā)送一個(gè)“dnsconfig”字符串和一個(gè)“delzone”字符串,后就向服務(wù)程序傳送要?jiǎng)h除的 zone 的名。添加 Domain:addDomain 按鈕的回調(diào)函數(shù)作用是:顯示一個(gè)窗題,并且在窗體中輸入了要添加到 zone 的 domain 后,并且按下了確定按鈕后,先向服務(wù)端發(fā)送一個(gè)“dnsconfig”和一個(gè)“addtozone”字符串,讓服務(wù)程序進(jìn)入添加的 domian 流程,然后把窗體文本框的數(shù)據(jù)讀取后發(fā)送到服務(wù)程序。圖 21 錯(cuò)誤日志查看界面save 按鈕回調(diào)函數(shù)作用:先向服務(wù)程序發(fā)送“Apachecon”和“saveconfig”字符串,然后再把從文本框中讀取的數(shù)據(jù)組合后發(fā)送到服務(wù)程序。(6) FTP 服務(wù)管理操作FTP 界面建立的同時(shí)要從臨時(shí)文件。stop 按鈕回調(diào)函數(shù)作用:先向服務(wù)程序發(fā)送“Apachecon”和“stop”字符串,然后等待服務(wù)程序把 Apache 服務(wù)重啟后,返回操作結(jié)果,把操作結(jié)果顯示給用戶(hù)。圖 20 Apache 配置界面在它的界面建立的同時(shí),也要從一個(gè)臨時(shí)文件中讀取從服務(wù)程序傳送過(guò)來(lái)的原配置文件的信息,示給用戶(hù),用戶(hù)可以通過(guò)文本框和 Label 看到現(xiàn)在 Apache 配置文件的一部分信息。在 zone 添加成功后,有時(shí)候我們要向 zone 里面添加和刪除一些 Domain 的信息。讓服務(wù)器通過(guò)發(fā)送的字符來(lái)添加 zone。也就是把接收到的服務(wù)器的信息建立在樹(shù)構(gòu)件里面,樹(shù)的構(gòu)件過(guò)程相對(duì)列表要復(fù)雜點(diǎn)。然后分別讀取 5 個(gè) check 按鈕的 Active 屬性,再根據(jù)其 Active 屬性來(lái)設(shè)置要發(fā)送的數(shù)據(jù),然后就是發(fā)送數(shù)據(jù)到服務(wù)程序??蛻?hù)端接收了數(shù)組后,通過(guò)這些字符來(lái)判斷當(dāng)前服務(wù)器的啟動(dòng)項(xiàng)目中有沒(méi)有這些服務(wù)的啟動(dòng),有就在相應(yīng)的服務(wù)上面打勾,沒(méi)有就不打。圖 17 用戶(hù)組的操作界面圖(3) 系統(tǒng)服務(wù)初始化系統(tǒng)服務(wù)初始化,主要是對(duì)系統(tǒng)要啟動(dòng)的服務(wù)管理,是否要在系統(tǒng)啟動(dòng)的時(shí)候啟動(dòng)這些服務(wù)。通過(guò)服務(wù)器程序來(lái)刪除服務(wù)器端的組。然后再把從組添加組界面得到的數(shù)據(jù)發(fā)送到服務(wù)程序。和上面用戶(hù)的操作過(guò)程大概相同,當(dāng)組頁(yè)面建立好了后,馬上就從客戶(hù)端創(chuàng)建的臨時(shí)文件中讀取服務(wù)器當(dāng)前的組狀態(tài)。刷新按鈕所觸發(fā)的事件是:調(diào)用 UserScan()函數(shù)。圖 14中的 Porperty 被點(diǎn)擊了后,創(chuàng)建一個(gè)臨時(shí)的窗體,用來(lái)顯示當(dāng)前所選中的用戶(hù)屬性。刪除按鈕后被按下了后,就調(diào)用 User_Del()函數(shù)。在把結(jié)果顯示給用戶(hù)。其界面如圖 14 所示。在用戶(hù)操作方面我們主要實(shí)現(xiàn)的是對(duì)用戶(hù)的添加,刪除和修改。}? 主界面當(dāng)用戶(hù)端和服務(wù)器端連接成功后,就進(jìn)入主窗體流程了,在主窗體建立前要接收一些從服務(wù)程序發(fā)送過(guò)來(lái)的數(shù)據(jù),然后把這些數(shù)據(jù)存放到一些臨時(shí)文件里面,等待具體創(chuàng)建窗體的時(shí)候調(diào)用這些數(shù)據(jù)來(lái)初始化界面。 if(*sock 0){return 。 char *text = NULL
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1