Next: , Previous: Process Information, Up: Processes


36.7 プロセスへ入力を送る

本節の関数を用いてEmacsが入力を送ると、 非同期プロセスは入力を受け取ります。 入力の送先であるプロセスと、送るべき入力データを指定する必要があります。 そのデータは、サブプロセスの『標準入力』に現れます。

疑似端末ptyのバッファ付き入力の容量に上限がある オペレーティングシステムもあります。 そのようなシステムでは、Emacsは他の文字に混ぜて定期的にeofを送り、 文字が流れるように強制します。 ほとんどのプログラムでは、このようなeofは無害なはずです。

ファイルに書き込むテキストと同様に、 サブプロセスの入力は、サブプロセスがそれを受け取るまえに コーディングシステムを用いて普通は符号化されます。 set-process-coding-systemで 使用するコーディングシステムを指定できます (see Process Information)。 さもなければ、coding-system-for-writenil以外であればこれを使います。 それ以外ではデフォルトの機構で決まるものを使います (see Default Coding Systems)。

— Function: process-send-string process-name string

この関数は、文字列stringの内容を 標準入力としてプロセスprocess-nameに送る。 引数process-nameは、プロセスかプロセス名であること。 これがnilであると、カレントバッファのプロセスを用いる。

関数はnilを返す。

          (process-send-string "shell<1>" "ls\n")
                nil
          
          
          ---------- Buffer: *shell* ----------
          ...
          introduction.texi               syntax-tables.texi~
          introduction.texi~              text.texi
          introduction.txt                text.texi~
          ...
          ---------- Buffer: *shell* ----------
— コマンド: process-send-region process-name start end

この関数は、startendで定義される領域内のテキストを 標準入力としてプロセスprocess-nameへ送る。 process-nameはプロセスかプロセス名であること。 (nilであると、カレントバッファのプロセスを使う。)

startendのどちらかが カレントバッファ内の位置を表す整数でもマーカでもないと、 エラーを通知する。 (どちらが大きな数であるかは重要ではない。)

— Function: process-send-eof &optional process-name

この関数は、プロセスprocess-nameが入力で 「ファイルの終りeof」を見るようにする。 eofはそれまでに送ったテキストのあとにある。

process-nameを指定しなかったりnilであると、 この関数はカレントバッファのプロセスにeofを送る。 カレントバッファにプロセスがないとエラーを通知する。

関数はprocess-nameを返す。

          (process-send-eof "shell")
                "shell"