このスレッドは約2つの質問です...
私の一部は次のmakefileとおりです。
list: all
while IFS= read -r f; \
do \
./analyze $$f & \
done < list.txt
list.txtファイル名のリストを含み、リストを調べて各ファイルmake listに適用します。./analyze
make list > output.txtに印刷するものすべてを記録するためによく使用しstdoutます。この場合、ターミナルには何も表示されません。
しかし、実行を中断できないことに気付きました。Ctrl+C、Ctrl+D、またはを試しCtrl+Zましたが、PC がクラッシュしたように見え、何もできません。
私が今気づいた理由は、以前は の呼び出しの周りにタイマーがあったからです./analyze。コードは
list: all
while IFS= read f; \
do \
./analyze $$f & \
PID=$$!; \
(sleep 3; kill $$PID) & \
wait $$PID; \
done < list.txt
sleep 3
次に、ファイルの呼び出しが 3 秒以上かかると、呼び出しが停止され、次のファイルが続行されます。ターミナルでは/bin/bash: line 8: kill: (2970) - No such process、通話時間が 3 秒未満の場合と 3 秒/bin/bash: line 9: 2973 Terminated ./analyze $f以上の場合のリストが表示されます。実行全体をCtrl+C(数回) 中断することができ、出力を に書き込むことができますoutput.txt。
これで、タイマーが不要になったことに気付きました。だから私の質問は:
1)makefileタイマーまたは私の OCaml コードを使用せずに変更./analyzeして、中断できるようにするにはどうすればよいですか。
2) の場合make list > output.txt、実行中にターミナルに簡単な情報を出力して、進行状況を確認するにはどうすればよいですか?