問題タブ [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()
c - このコードが期待どおりに機能しないのはなぜですか?
最近、シグナルを使用したプログラミングを始めました。C のマルチスレッド サーバー コードでそれらを使用しました。シグナルに関連するコードの一部を次に示しますが、正常に機能しません。
シグナルハンドラ:
}
Main() の内部:
私はこの方法をここで読んだ。kill -s SIGINT <pid of my program>
別の端末ウィンドウから送信しようとしましたが、プログラムが終了します。
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
再度呼び出すことにより)。これにより、今後のクエリが失敗するのを防ぐことができますが、現在のクエリが中止されるという影響がまだあります。
ありがとうクリス
linux - qemu の control+c シグナル
qemuがcontrol + c信号を処理する方法を理解するのを手伝ってもらえますか? そして、どのファイルで?(またはそれを理解するためのいくつかの便利なリンク)ルート(コールグラフなど)を作成したい。実際、このシグナルは私の mips ゲストでは機能していません (ただし、同じホストのマルタ mips では機能しています) ありがとうございます。
ホスト & ゲスト OS: Linux ゲスト アーキテクチャ: Mips64 ホスト アーキテクチャ: x86 QEMU バージョン: qemu-1.0.1
linux - control+c が機能しない
MIPS アーキテクチャの Linux 2.6.32.13-Cavium-Octeon を使用しています。端末で ctrl+c を押してプロセスを終了すると; 何も起こりません。カーネルでこれをトレースして問題を処理するにはどうすればよいですか?
stty -a
出力は次のとおりです。
ttyに問題はありますか?make menuconfig
「ttyを有効にする」ためのオプションがなく、コマンドbind -v
も機能していないためです。
ありがとう