SIGINT などの一部のシグナルについては、トラップを簡単にセットアップしてシグナルを処理し、必要に応じて実行を継続できます。^q および ^s の典型的な動作を、いじっている Ruby コマンドライン アプリケーションに追加したいと考えています。これを行う方法はありますか?特に、Windows、iOS、Linux、Solaris で使用できる移植可能な方法はありますか?
編集:
シグナルがプロセスに配信されないことが判明しました。実際、プロセスとその親プロセス (bash インスタンス) で strace を実行すると、プロセスも親プロセスも何が起こっているのかを示す情報を取得していないことがわかりました。彼らは単に停止されています。
1 秒に 1 回起動し、最後のアラームから 1 秒以上経過したかどうかを確認し、プロセスが中断されたと判断した場合は適切な呼び出しを行う SIGALARM ハンドラを作成しようとします。負荷の高いシステムでは、誤検知が発生する可能性があります。