実行時にコンソールから cin への入力を期待する C++ プログラムがある場合、シェル スクリプトからこの入力を自動化するにはどうすればよいですか? 出力をファイルに保存する必要もありますが、その部分は簡単です。/procのpidのファイル記述子にエコーするなど、さまざまな方法を調査しましたが、何も機能しないようです。
これが私がこれまでに持っているものです:
#!/bin/sh
g++ -o runme source.cpp
echo <<EOT | ./runme > output
expected program input
more expected program input
even more
EOT
入力の各行は、プログラム内の cin によって読み取られる「Enter キーを押す」必要があることに注意してください。これは、スクリプト内のプログラム入力が改行で区切られているため、発生するはずです。ここでは、プログラムが実行されますが、EOT の前に何を置いたかに関係なく、ファイルに同じ出力が生成されるため、期待どおりにプログラムの cin に入力されません。