999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的FTP服務(wù)器設(shè)計

2022-11-16 23:48:59陳麗瓊
無線互聯(lián)科技 2022年3期
關(guān)鍵詞:進程用戶

朱 澳,陳麗瓊

(湖南科技學(xué)院 智能制造學(xué)院,湖南 永州 425199)

1 背景及意義

Windows系統(tǒng)上的FTP服務(wù)器軟件雖然種類很多,但是大部分都是需要付費使用的,許多軟件就算付費也有許多問題存在。而在Linux上,利用shell命令使用FTP服務(wù)器,能讓FTP的使用極為方便簡潔。在Linux上,它們是可以完全免費使用的,比如vsftpd。開發(fā)一個基于Linux的FTP服務(wù)器具有重要的意義[1]。

2 需求分析

本FTP服務(wù)器的主要模塊包括登錄模塊、文件目錄操作模塊、文件操作模塊、文件傳輸模塊、工作模式和下載模塊。登錄模塊包括本地用戶直接登錄和用戶匿名登錄兩種方式。匿名用戶登錄時應(yīng)注意控制在當(dāng)前目錄下,但只有在客戶端才能出現(xiàn)在根目錄下。登錄用戶模式下的用戶名必須是在Linux環(huán)境下運行的用戶,如果不是Linux環(huán)境下運行的用戶,登錄時會提示出錯。原因是這種登錄模型的前提是讓Linux用戶判斷用戶名和登錄密碼的一致性和正確性。一些基本的目錄操作都是由文件目錄操作模塊來完成的。一般來說,文件目錄操作模塊包含了對目錄的刪除、目錄的重命名、特殊情況下的增加目錄操作等。以上所有的操作都必須是Linux用戶,如果是一個匿名用戶將無法進行上述操作[2]。其他與文件相關(guān)的操作一般同上述的目錄操作一起進行,比如對文件進行刪除和重命名等。只要是用戶在客戶端進行的操作,都是屬于混合操作,那么客戶端的處理方式是將所有的這些混合操作轉(zhuǎn)化成命令傳輸?shù)椒?wù)器端。用戶要實現(xiàn)文件上傳或?qū)⑽募螺d到本地都需要使用文件傳輸模塊來實現(xiàn)。其中還有很重要的一個功能是斷點續(xù)傳。當(dāng)然,文件上傳和下載才是本文設(shè)計的服務(wù)器的最主要功能,也是同斷點續(xù)傳一樣有用的功能[3]。

3 總體設(shè)計

程序開始執(zhí)行時,從配置文件中讀取相關(guān)的內(nèi)容進行初始化,如使用的連接方式、監(jiān)聽的端口、監(jiān)聽的服務(wù)器IP地址、支持連接的總IP數(shù)量等。然后,通過創(chuàng)建一個守護進程來避免一些問題的出現(xiàn),比如關(guān)于進程暫停的問題。創(chuàng)建一個守護進程主要是進行初始化操作,該操作主要是通過應(yīng)用共享內(nèi)存來實現(xiàn)。這里的處理既包括數(shù)據(jù)進程的建立,也包括對進程函數(shù)的調(diào)用。最后利用TCP協(xié)議創(chuàng)建Socket套接字來進行監(jiān)聽,服務(wù)器接收客戶端并創(chuàng)建新的套接字。此過程需要創(chuàng)建一個子進程來處理通信服務(wù)[4]。

4 FTP服務(wù)器的實現(xiàn)

4.1 進程的啟動

基于epoll、半同步/半異步模型以及線程池的FTP服務(wù)器是采用配置文件的方式保存系統(tǒng)配置以及用戶信息的。該用戶信息包括用戶名、密碼、權(quán)限、工作目錄、日志文件等。服務(wù)器支持PASV被動打開方式進行數(shù)據(jù)傳輸,支持斷點續(xù)傳與多用戶不同權(quán)限接入控制。線程池采用動態(tài)創(chuàng)建與回收基制,其中線程池保存兩個隊列——工作線程隊列與空閑線程隊列。當(dāng)空閑隊列中線程數(shù)低于一個門限或高于一個門限時,則分配或回收一部分線程,從而在保證系統(tǒng)高效性的前提下盡可能減小系統(tǒng)開銷。

整個系統(tǒng)的工作流程如下,系統(tǒng)啟動后首先進行資源分配,讀入配置文件,初始化線程池,初始化 epoll模型并開啟監(jiān)聽;當(dāng)新用戶接入時,進行用戶接入驗證,若合法則允許接入并把用戶消息保存到用戶管理對象中;當(dāng)新命令到達時,把命令放入消息隊列中等待處理;系統(tǒng)開啟若干個線程用來處理消息隊列中的消息,并使用信號進行通知,一旦消息隊列非空時,則會喚醒一個空閑線程;當(dāng)讀到“LIST”“STOR”“RETR”“REST”時,說明用戶準(zhǔn)備進行數(shù)據(jù)傳輸,則在數(shù)據(jù)傳輸線程池中提取一個空閑線程,修改線程數(shù)據(jù)并放到工作線程中執(zhí)行,執(zhí)行完畢后由線程把結(jié)果狀態(tài)返回給用戶并從工作狀態(tài)進入空閑狀態(tài)。用戶自接入成功一直處于命令交互狀態(tài),直到發(fā)送“QUIT”退出。

4.2 守護進程的實現(xiàn)

首先,設(shè)計人員應(yīng)該打開任務(wù)管理器,查看一下正在運行的有哪些進程。然后,逐一讀取出這些進程的全路徑,將該全路徑與要守護的應(yīng)用程序的全路徑比對。如果一致,說明要守護的應(yīng)用程序已開啟了,此時要分配一條線程監(jiān)控該進程句柄。當(dāng)該進程句柄返回信息,說明該進程已關(guān)閉,此時釋放進程句柄內(nèi)存,并重啟該進程。如果遍歷任務(wù)管理進程列表中所有進程時,沒有找到與要守護的應(yīng)用程序的全路徑一致的進程,說明要守護的應(yīng)用程序尚未打開,此時要啟動該應(yīng)用程序,然后轉(zhuǎn)入監(jiān)控流程。另外,一定要額外分配線程去監(jiān)控要守護的應(yīng)用程序。因為如果、使用主線程去執(zhí)行監(jiān)控任務(wù),會被長期阻塞,直到進程退出才會被激活,這樣就無法運行后續(xù)程序。況且,監(jiān)控程序要實現(xiàn)持續(xù)監(jiān)控,必須避免死循環(huán),如果主線程進入死循環(huán),則無法監(jiān)控其他要守護的進程。創(chuàng)建守護進程的關(guān)鍵步驟如下。

4.2.1 后臺實現(xiàn)

一般情況下,在后臺實現(xiàn)的第一步需要讓父進程重新排隊,而子進程由用戶進行創(chuàng)建。注意這時的父進程稱為一個孤兒進程。而在守護進程的終端,第一步將完成在shell終端的運行。設(shè)計人員要守護進程在后臺實現(xiàn),就必須讓守護進程不被掛起,采用的方法是調(diào)用fork()函數(shù)讓父進程結(jié)束,這樣守護進程就會作為子進程在后臺運行。

4.2.2 登錄會話和進程組

雖然守護可以在后臺運行,但是調(diào)用fork()函數(shù)后產(chǎn)生的子進程所擁有的資源是繼承父進程而來的,包括進程組、登錄會話、控制終端的這些資源是可以被系統(tǒng)收回的。為了能夠讓守護進程不受控制,設(shè)計人員可以通過調(diào)用setsid()函數(shù)實現(xiàn)。setsid()函數(shù)的主要功能就是使進程成為新的進程組長和會話組長,這樣就能夠同從父進程那邊繼承下來的登錄會話和進程組真正脫離。

進程組也被稱為作業(yè),這個作業(yè)本質(zhì)上是由一個或多個進程組合而成,這是進程組的一個重要特征。進程組中有多個進程,每一個進程不是孤立存在的,一定是屬于某一個確定的進程組。在waitpid函數(shù)和kill函數(shù)的參數(shù)中都曾使用進程組的概念,目的是簡化對多個進程的管理。當(dāng)父進程創(chuàng)建子進程時默認子進程與父進程屬于同一個進程組,進程組ID等于進程組第一個進程ID(組長進程)。所以,組長進程標(biāo)識其進程組ID。組長進程可以創(chuàng)建一個進程組及進程組中的進程,也可以隨時被終止。只要進程組中有一個進程存在,進程組就存在,與組長進程是否終止無關(guān)。

會話期間通常包含了至少一個進程的集合。既然是會話,前提是用戶一開始就進行了登錄操作,而且一定要成功登錄,當(dāng)用戶退出登錄以后回話結(jié)束。在整個過程中,出現(xiàn)的所有進程都是在當(dāng)前的會話中,也隸屬于當(dāng)前的會話。

4.2.3 禁止程序重新開啟控制終端

禁止程序重新開啟控制終端,是服務(wù)器端需要嚴格考慮的問題,以保證整個服務(wù)器的運行正常。現(xiàn)在,進程已經(jīng)成為無終端的會話組長,但它可以重新申請打開一個控制終端。要禁止進程重新打開控制終端,采用的方法是再次創(chuàng)建一個子進程,使進程不再成為會話組長。

4.3 關(guān)閉打開的文件描述符

守護進程的實現(xiàn)過程中,有一個標(biāo)準(zhǔn)步驟是關(guān)閉當(dāng)前打開的所有文件描述符。當(dāng)lim.rlim_curr為RLIM_INFINITY時,只需要關(guān)閉前1 024個文件描述符。遍歷所有可能打開的文件描述符是比較復(fù)雜的。但現(xiàn)在的系統(tǒng)調(diào)用很快,很多系統(tǒng)調(diào)用不用耗費太長的時間即可完成。通常情況下,守護進程啟動的時候,打開的文件描述符不多。

5 結(jié)語

各大高校為師生提供了一些基本的網(wǎng)絡(luò)服務(wù),比如教師和學(xué)生可以通過教務(wù)系統(tǒng)進行成績、選課和評教方面的操作,還能夠共享一些軟件安裝文件。教師也建設(shè)了自己的一些課程網(wǎng)站。通過課程網(wǎng)站,教師可以提供教學(xué)資源供學(xué)生瀏覽和下載,也可以發(fā)布最新的科研成果;學(xué)生能夠通過這些網(wǎng)站滿足一定的文件下載和共享需求。隨著雙一流精品課程的建設(shè),師生在使用過程中可能受到網(wǎng)速的限制,不能及時下載和上傳。為了讓這些網(wǎng)站真正發(fā)揮作用,本文設(shè)計并實現(xiàn)了一個基于Linux的FTP服務(wù)器,供教師和學(xué)生訪問。

猜你喜歡
進程用戶
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
100萬用戶
如何獲取一億海外用戶
我國高等教育改革進程與反思
Linux僵死進程的產(chǎn)生與避免
男女平等進程中出現(xiàn)的新矛盾和新問題
主站蜘蛛池模板: 999国产精品永久免费视频精品久久 | 亚洲精品无码抽插日韩| 天堂在线视频精品| 麻豆精品在线视频| 亚洲成人精品在线| 亚洲嫩模喷白浆| 国产一区二区三区精品欧美日韩| 亚洲视频四区| 免费高清a毛片| 91麻豆久久久| 亚洲av综合网| 欧美国产日产一区二区| 麻豆国产在线观看一区二区 | 精品無碼一區在線觀看 | 欧美日韩国产综合视频在线观看| 亚洲第一成年网| 中文字幕自拍偷拍| 国产成人综合在线观看| 成人综合在线观看| 欧美精品1区2区| 国产区福利小视频在线观看尤物| a国产精品| aⅴ免费在线观看| 欧美精品高清| 97国产在线视频| 天天综合网色| 亚洲大学生视频在线播放| 国产区网址| 欧美一级高清免费a| 最新国产你懂的在线网址| 精品久久人人爽人人玩人人妻| 久久青草免费91线频观看不卡| 色男人的天堂久久综合| 亚洲成年人片| 97在线免费| 天天干伊人| 欧美在线精品怡红院| A级毛片无码久久精品免费| 四虎永久免费在线| 国产jizz| 欧美综合成人| 日本少妇又色又爽又高潮| 亚洲swag精品自拍一区| 麻豆精品视频在线原创| 国产麻豆福利av在线播放| 国产97视频在线| 成人免费视频一区二区三区 | 无码高潮喷水在线观看| 国产欧美精品专区一区二区| 亚洲成在线观看| 久99久热只有精品国产15| 成人毛片免费在线观看| 国产一级毛片高清完整视频版| 亚洲国产系列| 青青草原国产av福利网站| 在线视频一区二区三区不卡| 国产91视频观看| 中国一级特黄大片在线观看| 色综合天天娱乐综合网| 无码不卡的中文字幕视频| 国产黄在线观看| 青草视频免费在线观看| 国产精品久久自在自线观看| 亚洲成人免费在线| 日韩亚洲综合在线| 无码内射中文字幕岛国片| 欧美专区在线观看| 亚洲一级色| 国产区免费精品视频| 日本人妻一区二区三区不卡影院 | 91久久国产综合精品女同我| 日韩精品一区二区深田咏美| 国产97公开成人免费视频| 亚洲日韩国产精品无码专区| 福利在线免费视频| 日本精品αv中文字幕| 亚洲91精品视频| 亚洲综合极品香蕉久久网| 国产熟睡乱子伦视频网站| 中文无码精品A∨在线观看不卡 | 一区二区午夜| 97国产在线观看|