2017-11-15 4 views
0

プログラムをstdinから読み込んで処理しています。 ( "tee/some/file"のように)expect:プロセスを生成するEOFを送る方法

このプログラムは、終了するためにstdin endを待機します。

私がExpectからそれを生成すると、私はsend多くのコンテンツの後、どのようにプログラムに "EOF"を送信するのですか?

Expectにはcloseコマンドがありますが、SIGHUPも送信され、expectプログラム出力はできなくなります。

+2

私は 'send \ x04'が行うと思います。それはCtrl + Dを送信します。 –

答えて

0

予想されるプログラムが実行される仮想端末を使用して(Windows以外の環境でも)期待しています。これは、キーをシミュレートするために文字シーケンスを送信することで処理を実行できることを意味します。特に、EOF control sequence is done with Ctrl+Dは、U + 000004という文字になります。端末はこれを処理して真のEOFにする。

あり、あなたが好むどのエスケープシーケンスに応じて、それを書くためのいくつかの方法、ですが、これらの一つが動作します:

# Hexadecimal-encoded escape 
send \x04 
# Octal-encoded escape 
send \004 
# UNICODE escape (also hexadecimal) 
send \u0004 

ときExpectはTcl 8.6を使用していますが、これらはすべて同じバイトコードを生成するので、あなたは好きです。

関連する問題