while no_user_key_pressed
{
do_something....
}
のようなものC++、Javaの、ncursesベースおよびその他のO/Sの特定を使用して、いくつかのオプションがあります。私は単純なbashポータブル関数が欲しいです。
^c割り込みを使用して残りのコードを強制終了する必要があります。残りのコードを殺さない方法ではCtrl-Cトラップすることができます
while no_user_key_pressed
{
do_something....
}
のようなものC++、Javaの、ncursesベースおよびその他のO/Sの特定を使用して、いくつかのオプションがあります。私は単純なbashポータブル関数が欲しいです。
^c割り込みを使用して残りのコードを強制終了する必要があります。残りのコードを殺さない方法ではCtrl-Cトラップすることができます
あなたはに小さなタイムアウトを使用することができます。
欠点は、ユーザーが "any key"ではなく、< RETURN>を押す必要があることです。例えば
:バッシュ3.2(OSのX)でテスト
while ! read -t 0.01
do
echo -en "$(date)\r"
done
echo "User pressed: $REPLY"
!
タイムアウトが満了した場合read
が失敗(false)を返すためです。
テスト済み。最新のLinuxバージョンで正常に動作し、2.6.18-410で失敗します。 「Press return to continue」は十分だと思います。 – fcm
「を押してテストを停止するには、任意のキーを」:のようなものを想像してみて
$ cat test.sh
#!/usr/bin/env bash
trap 'break' INT
while true
do
date
sleep 1
done
echo done
$ ./test.sh
Tue 28 Jun 12:01:22 UTC 2016
Tue 28 Jun 12:01:23 UTC 2016
Tue 28 Jun 12:01:24 UTC 2016
^Cdone
優れた代替手段。^C以外のオプションが利用可能でない限り、これは受け入れられる答えです。 – fcm
正確に何を達成したいですか? – cb0
'^ C'の何が問題なのですか?私はそれを使用しているすべての時間は間違っていたと言っているのですか? ';)'。 –
'INT'(" interrupt ")シグナルを捕まえるシグナルハンドラをインストールしてください。これは、[信号を知っている]すべてのプログラミング言語に適用されます。 – Kusalananda