日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




プロセスに対するパイプを開始します。

形式

#include <stdio.h>

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


引数



command

シェル・コマンド・ラインを含んでいる,null で終わる文字列へのポインタ。

type

I/O モードを含んでいる,null で終わる文字列へのポインタ。オープン・ファイルは共用されるので, type rコマンドを入力フィルタとして, type wコマンドを出力フィルタとして使用することができます。 type 引数としては,以下のいずれかの値を使用します。

  • r---呼び出し元プログラムは,返されたファイル・ストリームから読み込みを行うことで,コマンドの標準出力から読み込みを行うことができる。

  • w---呼び出し元プログラムは,返されたファイル・ストリームに書き込みを行うことで,コマンドの標準入力に書き込みを行うことができる。


説明

popen関数は,呼び出し元プログラムと,実行を待っているシェル・コマンドの間にパイプを作成します。関数はストリームのための FILE構造体へのポインタを返します。

popen関数は, DECC$PIPE_BUFFER_SIZE 機能論理名の値を使用して,パイプ用に作成するメールボックスのバッファ・サイズを設定します。 DECC$PIPE_BUFFER_SIZE の値には,512 〜 65024 バイトを指定できます。 DECC$PIPE_BUFFER_SIZE が指定されていない場合,デフォルトのバッファ・サイズ 512 が使用されます。

注意

  • popen関数を使って出力フィルタを呼び出す場合には,出力データがプログラム・バッファに残るために生じるデッドロックの可能性に注意するようにしてください。これは, setvbuf関数を使って出力ストリームがバッファリングされないようにするか, fflush関数を使って, pclose関数を呼び出す前にすべてのバッファリングされたデータをフラッシュさせることによって避けることができます。

  • UNIX との互換性を高めるため,以下の機能論理名を使用して, C RTL のパイプ処理の動作を制御することができます。

    • DECC$STREAM_PIPE 機能論理名に ENABLE を定義すると, pipe関数がレコード入出力ではなくストリーム入出力を使用するようになります。

    • DECC$POPEN_NO_CRLF_REC_ATTR 機能論理名に ENABLE を定義すると, popen関数でオープンしたパイプのパイプ・レコードに,CR/LF のキャリッジ制御が追加されなくなります。この機能を有効にすると, getsのようなキャリッジ・リターン文字に依存している関数で,望ましくない動作になる可能性がある点に注意してください。

fflush, pclose, および setvbufも参照してください。


戻り値

x オープンされたストリームのための FILE 構造体へのポインタ。
NULL エラーを示します。ファイルまたはプロセスを作成することができませんでした。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.