古賀@東工大です。
古賀> gplotはmgplotから呼び出されるperlのスクリプトであり,MaTXとgnuplot
古賀> の仲介をします。
古賀>
古賀> mgplot ------> gplot ------> gnuplot
古賀> (mmfile) (perl script)
古賀>
古賀> 上の図のようにデータが流れます。もし,データをプロットするために
古賀> gnuplot を使われているなら,mgplot を便利だと感じられると思います。
古賀>
古賀> ただし,perl が介在しているので,CPUの負担がちょっと大きいです。
perl を呼ばないで,直接 gnuplot を呼び出せるように,MaTXでUNIXのパイプ
(プロセス間通信の仕組み)を使えるようにしました。
ファイルと同様にプロセスをオープンし,データをプロセスに送ったり,
データをプロセスから受け取ったりできます。プロセスを popen() で
オープンしたあとは,プロセスディスクリプタによってプロセスを指定
します。これは,ファイルディスクリプタと同様に扱えるものです。
通信が不要になったプロセスは pclose() によって終了します。
【例1】 bc を呼び出して 3 + 4 の計算結果を得る。
if ((pid = popen("bc")) < 0) {
error("Can't open %s", "bc");
}
fprintf(pid, "3 + 4\n");
{a} = fscanf(pid, "%d");
print a;
pclose(pid);
【例2】 gnuplotを呼び出して正弦関数をプロットする。
if ((pid = popen("gnuplot -title sample")) < 0) {
error("Can't open %s", "gnuplot");
}
fprintf(pid, "plot sin(x)\n");
pause;
fprintf(pid, "quit\n");
pclose(pid);
--
古賀 雅伸
koga@mei.titech.ac.jp