popen

[戻る]

概要

手軽にパイプを使えるライブラリ。
普通にファイルをオープンして読み書きするような感覚で、子プロセスの標準入出力を扱える。

使い方

#include <stdio.h>

FILE *popen(const char *cmd, onst char *type);
int pclose(FILE *fp);
cmdで実行する子プロセスを指定する。これは、具体的には以下のように実行される。
sh -c cmd
typeは、fopenと同様に"r"または"w"を指定する。"r"としたときは子プロセスの標準出力を読むことができ、"w"としたときは子プロセスの標準入力に書き込むことになる。

具体例

#include <stdio.h>

#define MAXLINE 1024

int main()
{
  char s[MAXLINE];
  FILE *fpin, *fpout;

  fpin = popen("ls", "r");
  fpout = popen("sort -r", "w");

  while(fgets(s, MAXLINE, fpin) != NULL){
    fputs(s, fpout);
  }

  pclose(fpin);
  pclose(fpout);

  return 0;
}
lsが出力したものをsortに渡している。sortは-rオプションを付けているので、結果としてlsの出力結果を降順に並べ替えて出力している。つまり、
ls | sort -r
と同様の結果となる。


Copyright © 1999 by Jun Takahashi