問題タブ [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.
bash - bashで、スクリプトを停止せずにSIGINTをキャッチして処理する方法は?
のように見えます
SIGINT
キャッチされたらすぐにスクリプトを停止します。その後、on_sigint
が実行されます。SIGINT
スクリプトを停止せずに処理することはできますか?
c - SIGINTセミブロッキングは可能ですか?
私はSIGINTを処理しようとしています。私のプログラムでの SIGINT の主な目的は、現在の検索機能をキャンセルし、現在利用可能な結果を出力することです。しかし、SIGINT シグナルをキャッチしようとすると、プログラムが閉じてしまいます。(私はたくさん検索しましたが、十分に検索していないとは言わないでください)
私が試してみました :
基本的なシグナル処理 (以下のように)
サイガアクション機能
非ローカル信号処理
sigprocmask (信号をブロックするたびに procmask に問題が発生します。信号をキャッチできませんが、キャッチして画面に出力する必要があります)
結局、解決策を見つけるための検索キーワードが不足しています。何か案が ?(検索キーワードまたはコードの一部または論理的な方法でそれを行う ^^)
注 : このテキストには文法エラーがある可能性があります。間違いがありましたら申し訳ありません。
c - SIGINT は、明示的にキャッチされた場合にのみ子プロセスで受信されます
UNIXシステムコールを使用した次のテストCプログラムがあります。
次に、小さなシェルとして機能する別のプログラムがあります。私のテスト時点では、フォークして、子プログラムに上記のプログラムを実行させます(適切な引数を使用)。このシェルは、次を使用して Ctrl+C コマンドも無視しています。
結果は次のとおりです。
最初の実行は正しいようです。2 つ目はシグナルを事実上無視しているため少し奇妙ですが、プログラムはいずれにせよ終了します。sleep()
たぶん、中断された呼び出しを行っているためです。
しかし、私を混乱させるのは 3 番目の結果です。通常のシェルではプログラムは終了しますが、カスタム シェルでは何も起こりません。走り続けます。abide() と同じように、スリーパー プログラムのデフォルトのシグナル ハンドラ (それも終了します) を実行するべきではありませんか?
明確にしていただきありがとうございます。
git - Control-C は、Windows 7 の git bash で Ipython を強制終了します
Linux で何年もクルージングした後、おかしな Windows 環境に戻ってきました。私は Ipython を使用し、git bash で起動します。私のオフィスではこれを使用するように環境が整っているため、他のものを使用するのは難しいでしょう。
そのため、Ipython を起動して、間違って無限ループを起動したり、実行に時間がかかる悪いコードを起動したりすると、ctrl-c を使用します。
これは Ipython を強制終了します。かなり面倒です。これを回避する方法や、トリックを実行する別のキーを回避する方法は見つかりませんでした。
どんなアイデアでも大歓迎です。
本当にありがとう
python - wxPython が SIGINT でコンテキスト マネージャの終了を飲み込むのを防ぐ
wxPython は、コンテキスト マネージャの__exit__
呼び出しが発生しないように SIGINT をインターセプトしているようです。この動作を修正する方法はありますか?
この問題を示す小さなテスト プログラムを次に示します。
このように実行して Ctrl+C を押すと、出力は生成されません。wx コードを sleep ステートメントに変更して Ctrl+C を押すと、コンテキスト マネージャーは期待どおりに動作します。
c - 関数 signal() が C で SIGINT を使用して機能する方法
私はcでハンドル信号を学ぼうとしています。上記のコードでは、関数の信号がどのように機能するかを理解できませんでした。このコードを実行すると、control-c function f が実行され、ループが中断されることを理解しています。しかし、control-c コマンドを繰り返しすばやく押すと、スリープは実行されません。
signals - kill -INT pid は ksh スクリプト内のプロセスを強制終了できません
2 つのシナリオ:
CLI でコマンドを実行する
zfs send rpool/fs@snap | zfs recv rpool/fs1@snap &
[1] 139781
ps -ef|grep zfs
殺す -INT 139780
ps -ef|grep zfs
/li>
現在のシェル (119679) が 2 つの子 (139780 と 139781) を作成し、kill -INT が 139780 を正常に中断できることがわかります。
ここで、ほぼ同じ作業を行う ksh スクリプトを作成しました。
猫のアッシュ
。/灰
/li>
a.sh は 139789 をフォークし、139789 は 139791 をフォークしました。この状況で、a.sh は kill コマンドを呼び出して SIGINT を 139791 に送信しましたが、失敗しました。
a.sh が「zfs send」プロセスをフォークしないのはなぜですか? (bash スクリプトでは、a.sh は送信プロセスと受信プロセスの両方をフォークしました)? kill -s INT が「zfs send」プロセスを中断できなかったのはなぜですか? kshスクリプト内で送信プロセスを中断するには?
どうもありがとう。
macos - LLDB のアプリに Ctrl-C を送信します
終了中にセグフォルトが発生している CLI アプリがあります ( Ctrl-を送信した後C)
Ctrl-を押すとC、lldb で自然に実行が一時停止します。
次に試してみます: (lldb)process signal SIGINT (lldb)process continue
しかし、それは実際にはアプリを終了させるために何もしていないようです。
また試した:(lldb)プロセスシグナル2
bash - SIGINT をフォアグラウンド プロセスに送信すると機能しますが、バックグラウンドでは機能しません
私は2つのスクリプトを持っています。script1はscript2を生成し、それにシグナルを送信しSIGINT
ます。しかし、script2のトラップが機能していないようです?!
スクリプト 1:
スクリプト 2:
に変更./script2 &
し./script2
て押すとCTRL+C
、すべてが正常に機能します。それで、私は何を間違っていますか?
python - Node.js: process.kill() から送信された SIGINT を処理できない
Windows 8.1 x64 で Node.js v0.10.31 を使用しています。ハンドラーを処理するプロセス (node.js または python スクリプト) のSIGINT
場合、シグナルが別の node.js プロセスから によって送信されたときにハンドラーが呼び出されず、process.kill(PID, "SIGINT")
終了することに気付きました。CTRL-C
ただし、コンソールを押してSIGINTが送信された場合、ハンドラーが呼び出されることを実際に確認しました。
SIGINT
(CoffeeScript)を処理する Node.js スクリプトは次のとおりです。
コンソール出力:
を処理する python スクリプトを次に示しますSIGINT
。これも node.js によって無条件に強制終了されprocess.kill(PID, 'SIGINT')
ます。
コンソール出力:
ハンドラーが呼び出されないのはなぜですか?