Bash スクリプト ファイル内でプログラムを実行すると、select() がタイムアウトしないという問題があります。これは私の実装です:
#include <sys/select.h>
bool checkKeyPressed()
{
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
fd_set descriptor;
const int input = 0;
FD_ZERO(&descriptor);
FD_SET(input, &descriptor);
return select(1, &descriptor, NULL, NULL, &tv) > 0;
}
// プログラムを直接実行した後の strace 結果 (タイムアウトがあることを修正)
select(1, [0], NULL, NULL, {1, 0}) = 0 (Timeout)
// bash スクリプト ファイル内でアプリケーションを実行するための strace 結果 (タイムアウトなし)
select(1, [0], NULL, NULL, {1, 0}) = 1 (in [0], left {0, 999996})
read(0, "", 1) = 0
関数を変更して、Bash スクリプトでも実行できるようにするにはどうすればよいですか?