2012-03-03 7 views
1

コマンドラインのCプログラム(私は制御できません)への入力を自動化しようとしています。引数をとり、プロセッサ集中型のコードを実行します(読み込みに1分かかる)。情報のような形をしています。一度利用可能になったら、プロンプトにどのように入力するのが良いか分かりません。これを簡単にするCPANライブラリはありますか?これについてどうすればいいですか?明確にするために、私はこのプログラムをライブラリとしてラップしようとしています。 Git :: Wrapperがどのようにgitをラップするかのようなもの。プロンプトCLIスクリプトを自動化

+0

上記のCプログラムのstdinをリダイレクトしようとしましたか? –

+0

これをライブラリとしてラップしようとしています。私はIPC :: Cmdを使い始めましたが、それを使っている間にstdinに送ることができないので、うまく動作しないかもしれません。 – xenoterracide

答えて

5

あなたが自動化しようとしているプログラムの詳細を知らなくても、私はあなたがExpectを見てから始めることをお勧めしたいです。 IPC::Runstart,pumpfinishの関数でも可能ですが、Expectは上位モジュールです。 (本当に低レベルのモジュールの場合、コアにはIPC::Open3があります)

+1

期待はPerlよりもさらに涼しいです。私の好きなTclのことでしたが、Perlには同等のモジュールがありましたが、私はまだTclバージョンが好きです。 –

+0

私が見る限り、 'run_forked'または少なくとも明白な方法でexec'dプログラムにコマンドを送る方法はありません。期待はうまくいくようですが、学習曲線があります。 – xenoterracide

+0

@xenoterracide、そうです。私は 'child_stdin => SCALAR'を見て、ファイルハンドルを考えていましたが、そうではありません。あなたはIPC :: Runでそれを行うことができます。 – cjm

関連する問題