父子程序間通訊模型實現(popen)

2021-07-13 10:22:38 字數 2001 閱讀 4534

popen 函式相當於做了以下幾件事:

1、建立乙個無名管道檔案

2、 fork()

3、在子程序裡, exec command

4、 在子程序裡,

若 type == 「r」 ,  相當於進行:

int fd_new =  fopen("

pipe_name

",o_wronly);

dup2(0,fd_new);

若 type == 「w」 ,  相當於進行:

int fd_new =  fopen("

pipe_name

",o_rdonly);

dup2(0,fd_new);

5、返回值 為 對管道檔案 type型別操作的 檔案指標

p1中:

1 fp_in = popen(cmd, "

r") ;

popen的返回值  fp_in 檔案指標 是管道檔案的讀檔案指標

p2中:

popen(,「r」)把p2中的標準輸出重定向到 管道檔案 ,printf 相當於向管道檔案 fputs

1 printf("

%s\n

", src );

具體**:

p1中:

1 fp_out = popen(argv[1], "

w") ;

popen 的返回值 為 管道檔案的 寫檔案指標

p2中:

popen(,「w」)把p2中的標準輸入重定向到 管道檔案 ,gets 相當於從管道檔案 fgets

1 gets(src)
具體**:

父子程序間訊號通訊

司機售票員問題 建立子程序代表售票員,父程序代表司機,同步過程如下 售票員捕捉sigint 代表開車 發sigusr1給司機,司機列印 let s gogogo 售票員捕捉sigiquit 代表停車 發sigusr2給司機,司機列印 stop the bus 司機捕捉sigtstp 代表車到站 發s...

QT 父子程序間通訊

1.父程序設計 1.1首先建立程序類 ifndef myprocess h define myprocess h include class myprocess public qprocess endif myprocess h include myprocess.h myprocess mypro...

09 程序間通訊 無名管道(父子程序間)

toc 來自 管道是單向的 先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序 寫程序 在管道的尾部寫入資料,另乙個程序 讀程序 從管道的頭部讀出資料。管道包括無名管道和命名管道兩種,前者用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。管道通訊是單向的...