popen関数とpclose関数
標準I/Oライブラリのpopen関数でパイプを実現する。
#include <stdio.h> FILE *popen(const char *command, const char *type); 戻り値: 成功ならファイルポインタ、エラーならNULL int pclose(FILE *stream); 戻り値: シェルの終了ステータス。エラーの場合は-1
commandはシェルのコマンドライン。commandの場所はPATH環境変数を用いて検索される。
pclose関数はpopenによって作成された標準I/Oストリームをクローズしてコマンドの終了を待ち、シェルの終了ステータスを返す。
//lsコマンドパイプで実現する #include <stdio.h> int main() { FILE *fp; char buff[1024]; fp = popen("ls", "r"); while (fgets(buff, sizeof(buff), fp)) { printf("%s", buff); } pclose(fp); return 0; }