私は無限ループの中で何度もコマンドラインプログラムを実行したいと思います。
プログラムによって異なるデータが出力されることがあります。は、ちらつきなしで別のプログラムを連続して実行するためのLinuxプログラムですか?
新しいデータが出力されるたびに、以前のデータを上書きしたいと思います。
例:
次のプログラムは時刻を出力します。
#include <stdio.h>
#include <time.h>
int main(){
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
printf ("Current local time and date: %s", asctime (timeinfo));
}
単純なアプローチは、以下のようになります。もちろん
while true; do ./main; clear; done
、これは画面ごとの実行をクリアし、ちらつきの原因となります。
私は、変化に
を出力をリフレッシュするが、私は
(またはバッシュの言語機能)を標準のLinuxコマンドを使用して解決策を見つけることを期待していたカスタムプログラムにパイプそれを確かにできました。
プログラムの出力は複数行になる可能性があります。したがって、復帰(/ r)および再書き込みはオプションではありません。
あなたが聞いたことはありませんが、元のプログラムを変更することが許されている場合は、行自体をクリアすることができます。これはちらつきを避けることができます。なぜなら、新しい出力が印刷されるたびに(そしてフラッシュするときに制御する)ことができるからです。これは、出力作業の行を "置き換える"コマンドラインプログラムです。 http://stackoverflow.com/questions/1508490/how-can-i-erase-the-current-line-print-on-console-in-ci -am-working-on-a-lin –
@ChrisKitching私はどんなプログラムのドロップイン置換を探しています。例えば、私は 'ls'などでそれを使うことができます。それはパイプを通じて行うことも、プログラムは別のプログラム名を引数として取ることもできます。どんな作品でも。マルチライン出力も可能です! –
'watch --interval = 1 --no-title。/ main'を試してみませんか?まったく同じではありませんが、十分に近いでしょうか? – fvu