設計Unix下 程式

2021-09-05 00:04:13 字數 2704 閱讀 1105

文章試讀

不拘乙個遍程式系列

:程式設計序不能乙個腦袋鑽到底,有時要學會變通,即所謂的曲線救國。一

、二、三、四

職場規劃:一些雜七雜八的職場感悟吧。不值錢的軟體人才

精力充沛與事業成功

讓係分來得更猛烈些吧

不值錢的系統分析師

經濟危機下大學生如何就業

我的詩歌:都是我的打油詩,但是很值得一讀。不要工作還衣食無憂之四難歌

香格里拉美人圖

寶寶:超可愛的小寶寶 寫部落格

考試培訓:主要是關於考研、軟考和等級的相關題解。2009考研試題分析

2023年12月程式設計師試題分析

2023年軟考備考全攻略

2023年5月程式設計師試題解析

輕鬆寫係分**

在網路時代的生產實踐中,提供服務往往是分布式地,而單個主機系統,也經常需要呼叫其它主機系統的服務。

比如出於安全性考慮,某些資料庫系統常常被限制為只能在某台(幾台)主機上直接訪問,這樣就只有部分主機(暫時稱之為資料庫主機)能夠訪問和運算元據庫。其它主機(暫時稱之為遠端主機)就必須呼叫資料庫主機提供的服務才能完成資料庫操作,這個遠端呼叫的流程一般為:向資料庫主機建立套接字連線,並傳送訪問申請。資料庫主機接收這些申請,並校驗遠端主機的合法性,再向資料庫**操作請求,最後把資料庫操作結果返回給遠端主機。整個過程對於使用者來說是透明的,就好像遠端主機直接訪問了資料庫一樣。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

遠端呼叫就是指本地主機執行網路中另外一台計算機上某程式、函式或服務,就如同在本機上執行一樣,以上關於資料庫的訪問就是遠端呼叫的乙個例子。遠端呼叫也使用了客戶機-伺服器模型,傳送本地請求的主機是客戶機,網路中另外一台實際執行程序或服務的主機就是伺服器。

本章將設計乙個遠端呼叫的模型,在伺服器端執行乙個程序,這個程序接收客戶端傳送的

shell

請求,通過安全性驗證後在伺服器端執行這個

shell

,並將輸出結果**到客戶端。

本專案實際上是執行在伺服器端的乙個程式,它接收客戶申請、執行

shell

命令、將

shell

輸出結果**到客戶端,那麼在設計專案前必須解決如下問題:

1. 接收客戶端請求

伺服器端如何接收並處理客戶申請,包括採用什麼樣的通訊傳送,選擇併發處理流程還是序列處理流程等。

2. 執行shell

命令伺服器端如何執行客戶請求的

shell

命令,選擇何種方式在程序中執行其它的程式,供選擇的答案有

system

、fork-exec

和popen。

3. 獲取執行的

shell

輸出結果

由於伺服器需要把程序執行時的輸出結果返回給客戶端,那麼就必須考慮如何獲取正在執行的

shell

程序的輸出結果。

事實上新程序的執行可以選擇以下兩種方案:

(1) system

或fork-exec

在此方案下,服務程序無法互動式的獲取

shell

程序的輸出資訊,但可以通過輸入輸出重定向,將

shell

程序的輸出寫入到乙個檔案中,待

shell

程序執行完畢後讀取該檔案,並將其內容傳送給客戶端即可。

(2) popen

以管道的方式建立新程序執行

shell

命令,設定函式

popen

的引數type為「r

」,就可以及時獲取

shell

程序的輸出資訊了。 例

1. 以

popen

執行命令

szcmd

,並將命令

szcmd

的輸出結果列印到

stderr中。

file *pfile;                       

char szline[8192 + 1];

pfile = popen(szcmd, "r");          /*

建立管道、執行

shell

命令*/

while (fgets(szline, sizeof(szline), pfile) != null)    /*

讀取輸出結果

*/

pclose(pfile);                      /*

結束shell

程序,關閉管道

*/

與採用system

或fork-exec

方式相比,採用

popen

方式執行

shell

命令不但設計簡單,而且可以直接、及時地讀取到命令的輸出結果。因此,本專案以多程序併發套接字模式接收客戶端的請求,並採用

popen

互動地執行新程序。

封面前言目錄 

策劃作者

動態庫變長引數

檔案鎖外設

僵死程序

定時器i/o重定向

訊息佇列

共享記憶體  

實踐專案:

開發網頁投票器(一)

(二)

開發網頁投票器

字串報文

銀行代發工資報文

unix下遠端控制程式

總結 Unix設計哲學 Unix程式設計藝術》

學習了這句話其實常見,尤其是花過功夫學習英文的朋友.而這個原則可以應用在生活的各個方面.這一原則是歷經多少專案的檢驗結果,而我們正是站在一位巨人的肩膀上直接看到現在的理所當然的基本規則.如何翻譯呢?我覺得字面上是 簡潔,樸實 精神上可以相較於 大智若愚 哲學上則相似於 道 還要清楚的認識到,這些總結...

Unix設計的哲學

1 小既是美 相對於同類的龐然大物,小巧的事物有著無可比擬的巨大優勢。2 每個程式之作好一件事情 通過集中精力應對單一任務,程式可以減少很多冗餘的 從而避免過高的資源開銷 不必要的複雜性和缺乏靈活性。3 盡快建立原型 短時間內建立設計原型,有助於提高效率。4 舍高效率而取可移植性 unix作為第乙個...

unix下編寫socket程式的一般步驟

htons ntohl ntohs htons 函式 網路位元組順序與本地位元組順序之間的轉換 htonl host to network long ntohl network to host long htons host to network short ntohs network to hos...