popen関数でコマンドを実行

著者:崎間

Cのopen()関数はたとえばファイルをオープンしてfprintf()関数でファイル出力や入力をするものでした.それと同じような関数に,popen()関数があります. popen()を使うことで,プログラムから子プロセスとしてコマンドを実行することができます.そのコマンドの引数はfprintf()で渡すことができます.

popen()の手順

popen()関数をつかう手順はつぎのようなものです.

FILE *gid;

...

gid = popen("コマンド", "w");

...

fprintf(gid, "コマンドの引数\n");

...

pclose(gid);

コマンドとなるポインタgidをつくってそれに実行したいコマンド名を指定し,引数をfprintf()関数でgidに渡します.コマンド実行はシェルのパイプ機能で行われます.

gnuplotを呼ぶ

popen()を使って,たとえばCから直接グラフィックソフトのgnuplotを呼ぶことができます.つぎのソースを実行すると sin x のグラフが表示されます.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void) {
  FILE *gid;

  gid = popen("gnuplot -persist", "w");

  fprintf(gid, "plot sin(x)\n");

  pclose(gid);
  return 0;
}

このソースコードをsin.cという名前で保存して,

$ gcc -lm sin.c -o sin
./sin

とコンパイル,実行します.するとつぎのグラフが表示されると思います.

sin.png
Valid XHTML 1.1! home > コンピュータ > プログラミング >
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.2.17HTML convert time to 0.044 sec.