Linux系統程式設計day2知識點總結回顧1

2021-09-11 07:58:32 字數 3548 閱讀 5969

函式原型:pid_t wait_pid(pid_t pid, int *status, int options);

其中

pid1.2 用的比較多

1.pid > 0 : 某個子程序的pid

2.pid == -1:**所有子程序

**的時候迴圈**

while( (wpid = waitpid(-1,&status,xx)) != -1 )

3.pid == 0 :**當前程序組所有子程序

4.pid < 0 : 子程序的pid取反(相當於加「-「」)

options0 : waitpid 阻塞

wnohang : 非阻塞

返回值

-1: **失敗,沒有子程序

大於0: 被**子程序的pid

如果為非阻塞 0: 子程序處於執行狀態

引數 : status

判斷子程序是如何死的:

a. 正常退出

b. 被某個訊號殺死

c. 如果不關心怎麼死的 就寫成 null

呼叫一次只能**乙個子程序一. 神馬是程序間通訊(ipc):interprocess communication

二.程序間通訊常用的4種方式

管道:簡單

訊號:系統開銷小

共享對映區:有無血緣關係的都可以

本地套接字:穩定

一.管道的概念

本質:a.核心緩衝區

b.偽檔案- 不占用磁碟空間

特點:a.讀端,寫端對應兩個檔案描述符

資料寫端流入,讀端流出

b.操作管道的程序被銷毀之後,管道自動被釋放

c.管道預設是阻塞的。讀寫。

二.管道的原理

內部實現方式是佇列:環形佇列,先進先出

緩衝區的大小:預設4k,會根據實際情況做適當調整

三.管道的侷限性

佇列:內部只能讀取一次,不能重複讀取

半雙工

a.單工:遙控器

b.半雙工:對講機(資料傳輸方向是單向的)

c.雙工:**

匿名管道:適用於有血緣關係的程序

四. 建立匿名管道

int pipe(int fd[2]);

fd-傳出引數 fd[0]-讀端 fd[1]-寫端

單個程序能否使用管道完成讀寫操作?可以的。

注意事項

程序-----需要關閉寫端

程序-----需要關閉讀端

a. 父子程序間通訊,實現ps aux | grep bash

b. 兄弟程序間通訊,實現ps aux | grep bash

a.父子間程序通訊的實現思路

練習a **:

// an highlighted block

#include

#include

#include

#include

#include

#include

#include

int main

(int argc,

const char *ar**)

pid_t pid =

fork()

;if(pid ==-1

)//parent ps aux

if(pid >0)

//child grep "bash"

else

if(pid ==0)

printf

("pipe[0] = %d\n"

, fd[0]

);printf

("pipe[1] = %d\n"

, fd[1]

);close

(fd[0]

);close

(fd[1]

);return0;

}

a.兄弟間程序通訊的實現思路

練習a **:

#include

#include

#include

#include

#include

#include

#include

int main

(int argc,

const char *ar**)

for(i =

0; i < num; i++)if

(pid ==0)

//只建立兄弟程序

}//子程序1 ps aux

if(i ==0)

//子程序2 grep "bash"

if(i ==1)

//父程序

if(i == num)

printf

("child died pid = %d\n"

, wpid);}

}printf

("pipe[0] = %d\n"

, fd[0]

);printf

("pipe[1] = %d\n"

, fd[1]

);return0;

}

2019/2/25 胡雲層 於

day2知識總結

知識總結 1.變數 程式執行期間,內容在一定範圍之內可以發生改變的量。2.如何使用變數 a 乙個步驟 資料型別 變數名稱 資料值 b 兩個步驟 資料型別 變數名稱 變數名稱 資料值 3.識別符號 見名知意。類名稱每個單詞首字母大寫 變數名稱第乙個單詞首字母小寫,從第二個單詞開始首字母大寫。4.資料型...

linux系統程式設計知識(一)

注 本文為 unix linux程式設計實踐指導 有關筆記。1.檔案 dev tty 與終端有關的檔案 是鍵盤和顯示器的裝置描述檔案,向這個檔案寫相當於顯示在使用者的螢幕上,讀相當於從鍵盤獲得使用者的輸入。即使程式的輸入 輸出被 重定向,程式還是可以通過這個檔案與終端交換資料。2.從unix中學習u...

程式語言 day 2

標準庫提供的一次讀寫乙個字元的函式 test 3 將輸入一次乙個字元的複製到輸出 include int main putchar c 輸出 printf count d,line d,space d n count,line,space return 0 檔案結束 eof end of file ...