問題タブ [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.

0 投票する
1 に答える
21860 参照

shell - 特定の画面セッションに ctrl-c を送信する

名前付き画面セッション内でプロセスを起動するスクリプトを設計しています。

したがってbash myscript.sh start test、test という名前の画面を作成test.cfgし、ソフトウェアで実行します。

ここで、スクリプトで特定の画面セッションにアクセスし、CTRL+Cを実行して実行中のプロセスを停止し、画面セッションを強制終了できるようにします。

このようなもの:

0 投票する
1 に答える
1582 参照

windows - Windows: コマンド ラインからプロセスにシグナル (SIGNINT または SIGBREAK) を送信する方法

WindowsコマンドラインからプロセスにシグナルSIGINTを送信する最良の方法は何ですか? SIGBREAK私の場合、CTRL-Breakイベントをバッチ ファイルから実行中のJavaプロセスに送信したいと考えています。

プログラムによる解決策は探していませんが、既存のコマンド ライン ツールを探しています。信頼できる情報源から公開されている必要があります。

0 投票する
1 に答える
13199 参照

c++ - Windows/MinGW で「CTRL+C」をキャッチするための「SIGINT」(posix) シグナルと同等

Linux/gcc プログラムを Windows に移植しており、両方に共通の例外処理を実装しています。SIGINTMinGW/gccのシグナルに相当するものは何だろうと思っていました。

Linux での処理方法は次のとおりです。

Windows では、これは次のようになります。

私の問題は、Windows で利用可能なSIGINTものに相当するものがないことです。EXCEPTION_*

Windows (MinGW/gcc) で「CTRL+C」の割り込みをキャッチするにはどうすればよいですか?

どうもありがとう。

0 投票する
4 に答える
7950 参照

c - Readline: SIGINT で新しいプロンプトを取得する

readline を使用して、次のようなコードを取得しました。

インターセプトSIGINT(ユーザーが を押すCtrl+C) するように設定したので、シグナル ハンドラーhandle_signals()が動作していることがわかります。ただし、制御が に戻るとreadline()、入力前と同じ行のテキストが使用されます。私がやりたいのは、readline が現在のテキスト行を「キャンセル」して、BASH シェルのように新しい行を表示することです。そのようなもの:

これを機能させる可能性はありますか?私が読んだメーリング リストのどこかで を使用することが言及されていましlongjmp(2)たが、それは実際には良い考えとは思えません。

0 投票する
1 に答える
8457 参照

kill - killでsudoで実行されているプロセスを終了する方法

非特権ユーザー アカウントで bash を使用すると、次のことができます。

Ctrl-c で強制終了します。ただし、別の端末から SIGINT または SIGKILL を送信しても、その目的には機能しません。

それがなぜなのか、誰もが知っていますか?たとえば、スクリプトで使用するために、シグナルを送信するプロセスを強制終了できるようにしたいと考えています。

よろしく。

0 投票する
4 に答える
6889 参照

java - Java スレッドとシャットダウン フック

興味深い問題に遭遇しました。Java でスレッドが呼び出した場合、 をSystem.exit()介して参加できないようThread.join()です。

アプリケーションの後にシャットダウン フックを使用してクリーンアップしたい場合、次のような問題が発生します。

アイデアは、スレッドがそれぞれのリソースを終了する前に、それらのリソースを閉じることを保証することです。問題は、シャットダウン フックを呼び出すことができる 3 つの状況があることです。彼らです:

  1. ユーザーが [ctrl] + [C] を押します。
  2. リーダー スレッドが完了し、 を呼び出しますSystem.exit()
  3. 書き込みスレッドが完了し、 を呼び出しますSystem.exit()

ユーザーが [ctrl] + [C] を押す最初のケースは問題なく動作します。しかし、他の 2 つのケースのいずれにおいても、シャットダウン フックは永久にブロックされます。これは、Thread.join()がすでに呼び出されているスレッドに対して呼び出された がSystem.exit()永久にブロックされるという連鎖反応です。

したがって、2つの質問があります。まず、Thread.join(long millis)無期限にブロックしないように代わりに使用できることはわかっていますが、よりエレガントなソリューションを考えられる人はいますか? 第二に、同じスレッドに対して2回呼び出すことができ、2回目はすぐに戻るだけですが、すでにブロックを無期限に呼び出してすぐに返さないスレッドに対してThread.join()呼び出す理由を知っている人はいますか?Thread.join()System.exit()

0 投票する
1 に答える
304 参照

c - このコードが期待どおりに機能しないのはなぜですか?

最近、シグナルを使用したプログラミングを始めました。C のマルチスレッド サーバー コードでそれらを使用しました。シグナルに関連するコードの一部を次に示しますが、正常に機能しません。

シグナルハンドラ:

}

Main() の内部:

私はこの方法をここで読んだ。kill -s SIGINT <pid of my program>別の端末ウィンドウから送信しようとしましたが、プログラムが終了します。

0 投票する
0 に答える
670 参照

python-2.7 - Pythonスクリプトに送信されたSIGINTがMySQL接続を切断するのはなぜですか?

MySQLdb (mysql-python) を使用して MySQL データベースに接続している Python スクリプトに SIGINT を送信する際に問題が発生しています。Python スクリプトは無限ループで実行されます。スクリプトの現在のループが完了した後、SIGINT をキャッチして正常に終了したいと考えています。ただし、SIGINT は実行中の mysql クエリを中断し、サーバーから切断します。これにより、Python スクリプトが現在のループを終了しようとするため、エラーが発生します。

動作を次のスクリプトに絞り込みました。

infinity.py

このスクリプトをコマンド ラインから実行し、別のシェルから SIGINT を送信すると (を使用sudo kill -INT $PID)、次の出力が得られます。

handling SIGINTシグナルを送信するとすぐに が出力され、直後に が続きFinished very long queryます。executeしたがって、通話が中断されていることは明らかです。また、上記のスクリプトを gdb でデバッグしました。SIGINT を送信すると、gdb が停止し、次の出力が表示されます。

興味深いことに、私の Python シグナル ハンドラーからの出力行は、gdb を介して実行すると実行されませんが、libpthread.so.0 では実行が中断されます。

MySqldb パッケージの基礎となる C コードは、独自のシグナル ハンドラを登録していますか? クエリは別のスレッドで実行されていますか? その場合、Python スクリプトだけでなくシグナルも受信しますか?

この動作を防ぐ方法はありますか? シグナル ハンドラーを変更して MySQL に再接続できることを発見しました (MySQLdb.connect再度呼び出すことにより)。これにより、今後のクエリが失敗するのを防ぐことができますが、現在のクエリが中止されるという影響がまだあります。

ありがとうクリス

0 投票する
1 に答える
1633 参照

linux - qemu の control+c シグナル

qemuがcontrol + c信号を処理する方法を理解するのを手伝ってもらえますか? そして、どのファイルで?(またはそれを理解するためのいくつかの便利なリンク)ルート(コールグラフなど)を作成したい。実際、このシグナルは私の mips ゲストでは機能していません (ただし、同じホストのマルタ mips では機能しています) ありがとうございます。

ホスト & ゲスト OS: Linux ゲスト アーキテクチャ: Mips64 ホスト アーキテクチャ: x86 QEMU バージョン: qemu-1.0.1

0 投票する
1 に答える
1820 参照

linux - control+c が機能しない

MIPS アーキテクチャの Linux 2.6.32.13-Cavium-Octeon を使用しています。端末で ctrl+c を押してプロセスを終了すると; 何も起こりません。カーネルでこれをトレースして問題を処理するにはどうすればよいですか? stty -a出力は次のとおりです。

ttyに問題はありますか?make menuconfig「ttyを有効にする」ためのオプションがなく、コマンドbind -vも機能していないためです。

ありがとう