本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > p

popen(3S)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

popen(), pclose() ― プロセスへの、またはプロセスからのパイプ I/O の初期化

構文

#include <stdio.h>

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

int pclose(FILE *stream);

説明

popen() は、呼び出しプログラムと POSIX シェル、 /usr/bin/sh sh-posix(1) を参照) の間にパイプを作成します。

popen() の引き数は null で終わる文字列へのポインターで、一方はシェルコマンド行です。もう一方は I/O モードで、読み出しの時は r、 書き出しの時は w のどちらかです。

popen() はストリームポインターを返します。I/O モードが w の時はそのファイル stream に書き出すことでコマンドの標準入力に書き出せます。 I/O モードが r の時は、そのファイル stream から読み込むことでコマンドの標準出力から読み込めます。

popen() でオープンされたストリームをクローズするには pclose() を使います。この関数は関連したプロセスが終了するまで待ち、コマンドの終了状態を返します。

開いているファイルは共有されるので、 r 型のコマンドは入力フィルターとして、 w 型のコマンドは出力フィルターとして使えます。

アプリケーション使用法

ストリームが popen() によってパイプに関連づけられた後は、ストリームはバイト指向になります (orientation(5) を参照)。

戻り値

popen() はファイルあるいはプロセスが作成できなかったときは NULL ポインターを返します。 コマンドの実行が成功したかどうかは pclose() の戻り値を調べればわかります。

pclose() は、 streampopen() されたコマンドと関係ないと -1 を返します。 /usr/bin/sh が何らかの理由により実行されなかったときは 127 を返します。

警告

本来のプロセスと popen() されたプロセスが同時に共通のファイルに読み書きする場合には、バッファリングは正しく機能しないので、どちらのプロセスからもバッファー I/O は使ってはいけません。出力フィルターでの問題は fflush() などを使って、注意深くバッファーを掃き出すことで防げます。詳しくは fclose(3S) を参照してください。

標準準拠

popen(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2

pclose(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.