問題タブ [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 に答える
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も機能していないためです。

ありがとう

0 投票する
3 に答える
1429 参照

linux - 「ctrl c」を使用してすべてのプロセスを強制終了するにはどうすればよいですか?

C++ コードからコンパイルされた exe ファイルがあります。そして、bash を使用して Linux 環境をセットアップし、この.exeプログラムを呼び出します。

ここで問題になりますが、ほとんどの場合、ユーザーはctrlcプログラムの使用を終了するとき、または続行したくないときにプロセスを強制終了するために使用したいと考えています。

bash プロセスはctrlc正常に終了しますが、.exe通常は強制終了されずに実行されています。そのため、ユーザーkill -9 xxxはプロセスを強制終了するために使用する必要があります。殺すのを忘れると、CPU が完全に占有される可能性があります。

この問題を解決するにはどうすればよいですか? exeファイルのコードやbashスクリプトをどうにかしようかな。

ありがとう

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

linux - bash でキーボード割り込みをキャプチャする

キーボード割り込みをキャプチャするbashの機能があります。関数は次のようになります。

さて、同じスクリプト内にinstall()、標準./configureの , make,make installプロセスを使用して、ソースからいくつかのパッケージを次々にインストールするという別の関数があります。アイデアは、3 つのインストールを次々に実行している間にユーザーの割り込みをキャプチャすることです。問題は、次のステートメントをどこに置くかです。

install()では、関数内の最初のステートメントとして配置する必要がありますか? それともif-else条件が必要ですか?

0 投票する
2 に答える
362 参照

c - 子プロセスの SIGINT について

私はシェルを書いています。今度は子プロセスを制御します。signal (SIGTERM, SIG_DFL);子プロセスで使用すると、

信号 SIGINT は Ctrl + C によって生成され、その信号は OS シェル全体を終了します。

シェル全体ではなく、「cat」のみなど、プロセスを終了するにはどうすればよいですか?? 次のようなものを使用する必要があります:

本当にスロットに感謝します。

0 投票する
2 に答える
334 参照

linux - LinuxでのSIGINTシグナルの再インストール

Linux シグナルを扱うプログラムを書いています。具体的には、シグナル SIGINT を子プロセスに再インストールしたいのですが、機能しないことがわかりました。

これが私のコードのより単純なバージョンです:

シェルが「In child process:」と出力しているときに、ctrl+c を押します。関数handlerは問題handler2なく実行されますが、実行されることはありません。

私のコードのこのバグを手伝ってくれませんか?

更新: プロセスの実行中に子プロセスに SIGINT シグナルを受信させたいのですfooが、それは可能ですか?

0 投票する
2 に答える
373 参照

ruby - Ctrl+C で Sinatra + EM::WebSocket サーバーを強制終了しない

EM::WebSocket サーバーと Sinatra サーバーの両方を実行する Ruby アプリを構築しています。個人的には、これらの両方が SIGINT を処理する機能を備えていると思います。ただし、同じアプリで両方を実行すると、Ctrl + C を押すとアプリが続行されます。私の推測では、そのうちの 1 つが SIGINT をキャプチャしており、もう 1 つもそれをキャプチャできないようにしています。しかし、それを修正する方法がわかりません。

一言で言えばコードは次のとおりです。