循序漸進學unix 上機記錄(四)

2021-06-11 23:06:24 字數 1243 閱讀 6997

一連4周,每週兩門考試,好長時間沒能繼續把上機記錄完成。現在總算進入聖誕假期,爭取把這一系列寫完。

上回說到使用pipe在兩個程序之間做雙重重定向,下面我們繼續看下一練習:

5,乙個管道「pipe」,能否被多個程序同時訪問?為了回答這一問題,建立乙個父程序和兩個子程序,兩個子程序同時向管道寫入,父程序負責讀取。這一問題沒有太大難度,**如下:

#include#include#include#include #include #include void main(int argc, char** argv)

else

read( tube[0], &rcv, 1);

printf("père : read du tube :%c. \n", rcv);

read( tube[0], &rcv, 1);

printf("père : read du tube :%c. \n", rcv);

}}

6,不阻塞的pipe。建立乙個程序同時從兩個pipe中讀取資訊,為了能夠立即顯示某一管道中讀取的資訊而不被另一管道阻塞,可以使用函式fcntl(). 這一函式可以實現對檔案描述符的很多操作,如設定標誌位等等。在這一問題中,我們需要使用這一函式把pipe的讀入段設為不阻塞。

即fcntl(pipe[0], f_setfl, o_nonblock);

完整**:

#include#include#include#include #include #include void main(int argc, char** argv)

else

while(1)

}}

7.使用「命名管道」。「named pipe」。

之前的pipe只能在程式中建立,用於同一程式的程序間通訊,而 named pipe是乙個檔案形式的pipe,通過mkfifo命令或同名函式建立,可以在磁碟上看到。它可以用來在不同的程式間傳遞資訊。

先在命令列中使用mkfifo命令建立乙個名為pipenomme的pipe檔案後,就可以像往常一樣使用了,不過這次通訊的是兩個程式:

讀:

#include#include#include#includevoid main()

寫:

#include#include#include#include#includevoid main()

循序漸進學程式設計

軟體開發者是乙個日新月異的領域 it 中的大師,今天的程式設計方式與明天的程式設計或許截然不同,技術在不斷地革新,新語言 新平台的如雨後春筍般出現 更好的解決方案的冒出,因此我們需要跟得上節奏,我們沒有選擇,唯有努力提高自己。下面的幾點建議或許能幫助你成為乙個優秀地開發者。你是否聽說過 kaizen...

循序漸進學習Django

利用這一星期的業餘時間學習django,學到了模板系統,感覺還是不錯,很簡單的東東,django是個python web框架,即然是框架,就提供了很多已經封裝好的能夠快速解決問題的方法.所以忽然覺得太先進的框架反而對自己的python基礎發展不太好.即使學會了django提供的模板使用方法,但是不知...

《循序漸進學Docker》 導讀

致謝 首先要感謝dotcloud公司,是他們創立了docker這個容器引擎,同時也要感謝為docker整個生態圈貢獻大量周邊元件的所有作者,是你們讓docker技術發展得越來越好,開源的精神與力量在你們身上體現得淋漓盡致。感謝王冬生兄貢獻他在工作中的案例 docker離線系統應用案例 內容具有非常高...