問題タブ [sigint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - 特定の画面セッションに ctrl-c を送信する
名前付き画面セッション内でプロセスを起動するスクリプトを設計しています。
したがってbash myscript.sh start test
、test という名前の画面を作成test.cfg
し、ソフトウェアで実行します。
ここで、スクリプトで特定の画面セッションにアクセスし、CTRL+Cを実行して実行中のプロセスを停止し、画面セッションを強制終了できるようにします。
このようなもの:
windows - Windows: コマンド ラインからプロセスにシグナル (SIGNINT または SIGBREAK) を送信する方法
WindowsコマンドラインからプロセスにシグナルSIGINT
を送信する最良の方法は何ですか? SIGBREAK
私の場合、CTRL-Breakイベントをバッチ ファイルから実行中のJavaプロセスに送信したいと考えています。
プログラムによる解決策は探していませんが、既存のコマンド ライン ツールを探しています。信頼できる情報源から公開されている必要があります。
c++ - Windows/MinGW で「CTRL+C」をキャッチするための「SIGINT」(posix) シグナルと同等
Linux/gcc プログラムを Windows に移植しており、両方に共通の例外処理を実装しています。SIGINT
MinGW/gccのシグナルに相当するものは何だろうと思っていました。
Linux での処理方法は次のとおりです。
Windows では、これは次のようになります。
私の問題は、Windows で利用可能なSIGINT
ものに相当するものがないことです。EXCEPTION_*
Windows (MinGW/gcc) で「CTRL+C」の割り込みをキャッチするにはどうすればよいですか?
どうもありがとう。
c - Readline: SIGINT で新しいプロンプトを取得する
readline を使用して、次のようなコードを取得しました。
インターセプトSIGINT
(ユーザーが を押すCtrl+C
) するように設定したので、シグナル ハンドラーhandle_signals()
が動作していることがわかります。ただし、制御が に戻るとreadline()
、入力前と同じ行のテキストが使用されます。私がやりたいのは、readline が現在のテキスト行を「キャンセル」して、BASH シェルのように新しい行を表示することです。そのようなもの:
これを機能させる可能性はありますか?私が読んだメーリング リストのどこかで を使用することが言及されていましlongjmp(2)
たが、それは実際には良い考えとは思えません。
kill - killでsudoで実行されているプロセスを終了する方法
非特権ユーザー アカウントで bash を使用すると、次のことができます。
Ctrl-c で強制終了します。ただし、別の端末から SIGINT または SIGKILL を送信しても、その目的には機能しません。
それがなぜなのか、誰もが知っていますか?たとえば、スクリプトで使用するために、シグナルを送信するプロセスを強制終了できるようにしたいと考えています。
よろしく。
java - Java スレッドとシャットダウン フック
興味深い問題に遭遇しました。Java でスレッドが呼び出した場合、 をSystem.exit()
介して参加できないようThread.join()
です。
アプリケーションの後にシャットダウン フックを使用してクリーンアップしたい場合、次のような問題が発生します。
アイデアは、スレッドがそれぞれのリソースを終了する前に、それらのリソースを閉じることを保証することです。問題は、シャットダウン フックを呼び出すことができる 3 つの状況があることです。彼らです:
- ユーザーが [ctrl] + [C] を押します。
- リーダー スレッドが完了し、 を呼び出します
System.exit()
。 - 書き込みスレッドが完了し、 を呼び出します
System.exit()
。
ユーザーが [ctrl] + [C] を押す最初のケースは問題なく動作します。しかし、他の 2 つのケースのいずれにおいても、シャットダウン フックは永久にブロックされます。これは、Thread.join()
がすでに呼び出されているスレッドに対して呼び出された がSystem.exit()
永久にブロックされるという連鎖反応です。
したがって、2つの質問があります。まず、Thread.join(long millis)
無期限にブロックしないように代わりに使用できることはわかっていますが、よりエレガントなソリューションを考えられる人はいますか? 第二に、同じスレッドに対して2回呼び出すことができ、2回目はすぐに戻るだけですが、すでにブロックを無期限に呼び出してすぐに返さないスレッドに対してThread.join()
呼び出す理由を知っている人はいますか?Thread.join()
System.exit()