FreeBASIC マニュアルのトップに戻る

FreeBASIC OpenPipe

目次→実行時ライブラリー参考→ファイル入出力関連OPEN PIPE←オリジナル・サイト

OPEN PIPE 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

外部過程の標準入力(stdin)ストリームや、標準出力(stdout)ストリームを開き、ファイル操作のように使います。


構文:
Open Pipe shell_command For Input As [#]filenumber
Open Pipe shell_command For Output As [#]filenumber
Open Pipe shell_command For Binary access_type [#]filenumber

用法:
result = Open Pipe( command[,] For {Input|Output}[,] As filenumber )
または、
result = Open Pipe( command[,] For Binary[,] access_type[,] As filenumber )
(または、QB-風の構文で、)
Open Pipe filename For {Input|Output} As filenumber
(または、)
Open Pipe filename For Binary access_type As filenumber

パラメタ:
shell_command
オペレーティング・システムのコマンド・シェルの中で実行する外部過程です。
相対ファイル経路は、現在のディレクトリからの相対パスです( Curdir を見てください)。
実行パスや引数に二重引用符を必要とするプロセスのためにパイプを開く場合、パイプ文字列全体を二重引用符の中に入れ子にする必要があります。
access_type
呼び出し過程で要求される、読みとりか書き込みのアクセスの形式。
  • Access {Read|Write} (外部過程の stdinstdout ストリームの、どちらかを開くことができます)
filenumber
外部過程の stdinstdout ストリームに結びつけるために、利用可能なファイル番号。

戻り値:
最初の用法で、Open Pipe は、32 bit Long を返します:成功の場合は、ゼロ (0) を、そうでなければ、ゼロ以外のエラー・コードを返します。

記述:
Open Pipe は、コマンド・シェルの中で別のプロセスを実行します。そして、読み書きのために stdin 流れか stdout 流れのいずれかを開きます。
file number は、流れに結び付けます。そして、以降の Input # などの、ファイル操作で使われます。利用可能な filenumber は、Freefile で検索できます。
外部過程が存在しないと、ランタイム・エラーになります。

InputOutputfile mode は、外部過程の stdin 流れと stdout 流れを開きます。それぞれ、テキストを順次 I/O して、プレーンテキストを、読んだり、書いたりできます。
文字、単語または行全体は、Line Input #Print # のような、テキスト・モード・ファイル操作を使って、読んだり、書いたり、できます。

Binary file mode は、外部過程の stdin 流れか stdout 流れを開きます。これは、指定される access type (上の access_type パラメータの説明を見てください) に従います。そして、任意のサイズの、解釈された生データを、ランダム・アクセス読み取り、あるいは書き出しします。
ByteLongint のような簡単なデータ型の値と、メモリの全体の塊は、Get #Put # のようなバイナリ・モードのファイル操作で、流れから読み込むか、または流れに書くことができます。

FB は、双方向のパイプをサポートしないので、OS の API関数を使って実装しなければなりません。

Open Pipe が返すエラーコードは、次の行の Err を使ってチェックできます。 関数バージョンの Open Pipe は、エラー・コードを直接 32 bit Long で返します。

ランタイム・エラー:
Open Pipe は、下の runtime errors の1つを投げます:

(1) Illegal function call

例:
'' この例は、Open Pipe を使って、シェル・コマンドを実行し、出力を検索します。
#ifdef __FB_UNIX__
Const TEST_COMMAND = "ls *"
#else
Const TEST_COMMAND = "dir *.*"
#endif

Open Pipe TEST_COMMAND For Input As #1

Dim As String ln
Do Until EOF(1)
    Line Input #1, ln
    Print ln
Loop

Close #1


Dim text As String
Dim COUNTER As Integer
'fbc.exe のパスは、お使いの環境に合わせて修正して下さい。
COUNTER = 0
Open Pipe "C:\Tool\FreeBASIC\fbc.exe" For Input As #1
Print "Output of fbc:"
Do While Not EOF (1)
   Line Input #1, text
   Print text
   COUNTER = COUNTER + 1
   If COUNTER Mod 10 = 0 Then Sleep
Loop
Close #1
Sleep


渡辺 注:引数無しで fbc.exe を実行すると、コンパイラのふるまいを指定するために使える、オプションとコマンドライン・スイッチの、リストが、表示されます。


プラットホーム差:

QBからの違い:

参照:
ファイル入出力関連に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2023-06-24 13:56:49
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual

ホームページのトップに戻る

表示-非営利-継承