Next: , Previous: , Up: Files   [Contents][Index]


6.18.3 Redirection

typeemit の出力と、 それらを使用するすべてのワード(明示的なターゲット・ファイルを持たないすべての出力用ワード)を、 outfile-execute を使用して任意のファイルにリダイレクトできます。 以下のように使用します:

: some-warning ( n -- )
    cr ." warning# " . ;

: print-some-warning ( n -- )
    ['] some-warning stderr outfile-execute ;

これは、 some-warning を execute した後、 元の出力先を復元します。 この構造は例外に対して安全です。 同様に、 key からの入力と、 それを利用した入力(明示的にファイルを指定しない入力用ワード)をリダイレクトするための infile-execute があります。

outfile-execute ( ... xt file-id – ...  ) gforth-0.7 “outfile-execute”

type などの出力を file-id にリダイレクトして xt を execute します。

outfile-id ( – file-id  ) gforth-0.2 “outfile-id”

File-id は、 emit や、 type や、 入力として file-id を受け取らない出力用ワードによって使用されます。 outfile-execute で変更しない限り、 デフォルトでは outfile-id は実行中のプロセスの stdout を生成します。

infile-execute ( ... xt file-id – ...  ) gforth-0.7 “infile-execute”

key などの入力を file-id にリダイレクトして xt を実行します。

infile-id ( – file-id  ) gforth-0.4 “infile-id”

File-id は、 key や、 ?key や、 「ユーザー入力デバイス」(user input device)を参照するものすべてによって使用されます。 デフォルトでは、 infile-execute で変更しない限り、infile-id は実行中のプロセスの stdin を生成します。

あなたが、 入力または出力をファイルにリダイレクトしたくない場合は、 keyemittype が defer されたワードであるという事実を利用することもできます(see Deferred Words)。 ただし、 その場合は、 復元と、 例外からの保護について、 自分で心配する必要があります。 また、 この方法で出力をリダイレクトするには、 emittype の両方をリダイレクトする必要があることに注意してください。