-
PIPE
hStream = PIPE sPipeName FOR [ READ ] [ WRITE ] [ WATCH ] |
読み取り、書き込み、またはその両方のために名前付きパイプを開きます。 パイプが存在しない場合は自動的に作成されます。
パイプは、同じシステム内のプロセス間で一方向の通信の流れを提供します。 言い換えれば、それらは半二重、つまりデータが一方向にのみ流れるということです。
パイプの1つの大きな特徴は、通信媒体を流れるデータが一時的なものであるということです。 "read"記述子を使用してデータが読み取られると、それを再度読み取ることはできません。 また、書き込み記述子にデータを連続して書き込むと、データが書き込まれた順序でのみデータを読み取ることができます。
ただし、入力操作または出力操作を実行する前に、パイプの両端を同時に開く必要があります。 読み込み用にパイプを開くと、通常、他のプロセスが書き込み用に同じパイプを開くまでブロックされます。
GambasはFIFO(先入れ先出し)パイプを実装しています。 詳細については、Linux / UnixのマニュアルページにあるMKFIFOを参照してください。
- READキーワードが指定されていると、パイプは読み取り用にオープンされます。
- WRITEキーワードが指定されている場合、パイプは書き込み用に開かれます。
- WATCHキーワードが指定されている場合、パイプはインタプリタによって監視されます。
・少なくとも1バイトをパイプから読み取ることができる場合は、イベントハンドラFile_Read()が呼び出されます。
・少なくとも1バイトをパイプに書き込める場合は、イベントハンドラFile_Write()が呼び出されます。
パイプが正常に開かれると、ストリームオブジェクトが変数hStreamに返されます。
パイプストリームはバッファされません。 |
Errors
Message |
Description |
---|---|
Access forbidden (43) | 要求されたパイプへのアクセスが許可されていないか、pathnameのパス接頭部にあるディレクトリーの1つに対する検索許可が拒否されているか、親ディレクトリーへの書き込みアクセスが許可されていません。 |
ファイル名を作成しようとしましたが、パイプ名を含む装置に新規ファイル用のスペースがありません。 | |
Not a directory (49) | Pipe nameでディレクトリとして使用されているコンポーネントは、実際にはディレクトリではありません。 |
System error... (42) | その他の考えられるシステムエラー:
|
Examples
'パイプに送信されたメッセージを印刷します
'1つのウィンドウで実行を開始してから実行します。ls> / tmp / FIFO1
Dim hFile As File
Dim sLine As String
hFile = Pipe "/tmp/FIFO1" For Read
Do
Read #hFile, sLine, -256
If Not sLine Then Break
Print sLine;
Loop
'データが大量のテキスト行であることがわかっている場合は、パイプを読む別の方法
Dim hFile As File
Dim sLine As String
hFile = Pipe "/tmp/FIFO1" For Read
Do
Line Input #hFile, sLine
If hFile.EndOfFile Then Break
Print sLine
Loop
See also
コメント
最新を表示する
NG表示方式
NGID一覧