天天看點

Linux下C程式設計,程序通信之标準流管道通信(即系統調用)

1.概述

  在程式設計的過程中總會需要使用系統調用,如linux下的ps,touch,rm,grep指令等;windows下的dir,mkdir,del指令等。

  在linux中執行系統調用,通常使用标準流管道。

  标準流管道将一系列的建立過程合并到一個函數popen()中。poen完成的工作有以下幾步:

  (1)建立一個管道。

  (2)fork一個子程序。

  (3)在父子程序中關閉不需要的檔案描述符。

  (4)執行exec函數族調用。

  (5)執行函數中所指定的指令。

2.主要函數說明

  FILE*popen(const char*command,const char*type)

  (1)command:指向的是一個以null結束符結尾的字元串,這個字元串包含一個shell指令,并被送到/bin/sh以-c參數執行,即由shell來執行。如:ps -ef | grep root

  (2)type:“r”,檔案指針連接配接到command的标準輸出,即該指令的結果産生輸出;“w”:檔案指針連接配接到command的标準輸入,即該指令的結果産生輸入

  (3)傳回值檔案描述符。當type='r',可以讀取指令的執行結果;當type='w',可以給指令輸入參數。

3.函數使用說明

3.1執行指令并讀取執行結果

程式輸出結果:

Linux下C程式設計,程式通信之标準流管道通信(即系統調用)

 3.2執行指令并輸入參數

 檢視結果:(建立了檔案aaa,并輸入了指定的資料)

Linux下C程式設計,程式通信之标準流管道通信(即系統調用)