問題タブ [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.
c - pthread_sigmask が GDB に干渉する
私は、シグナル処理に関する特定の要件を備えた Linux でマルチスレッド プログラムに取り組んできました。たとえば、単一の Ctrl-C 入力の統計を出力するプログラムが必要です。
pthread_sigmask と sigwait を使用してこれを実装しました。つまり、残りのスレッドを作成する前に、メイン スレッドで重要でないシグナルをすべてブロックし、sigwait でブロックされた「キャッチャー」スレッドを開始します。
初期化 (メイン):
キャッチャー スレッド ルーチン:
すべてが期待どおりに機能しますが、キャッチ メカニズムにより、GDB がプログラムを一時停止できなくなります (SIGINT ルーチンがトリガーされます)。どうすればこれを修正できますか?
ありがとう
java - Cygwin CTRL-C (シグナル割り込み) が正しく機能しない - JVM シャットダウン フックが開始しない
プログラムの終了/中断をクリーンアップするためにシャットダウン フックを利用する Java アプリケーションに取り組んでいますが、Cygwin の CTRL-C の実装がシャットダウン フックをトリガーしないように見えることに気付きました。表面的には、プロセスを中断し、制御をコマンド ラインに戻したように見えますが、プロセスのシャットダウン フックはまったくトリガーされないため、クリーンアップは行われません。
cmdではキャッチされますが、さまざまな制約があるため、どうにかしてCygwinで動作させる必要があります。
Cygwin を介して実行中のプロセスで SIGINT を起動する方法はありますか、または中断と終了をクリーンアップするために使用できるシャットダウン フックの代替手段はありますか?
c++ - SIGINT に引数を渡すことはできますか?
プログラムの SIGINT 呼び出しで使用できるように、いくつかの追加の引数を渡そうとしていますが、コンパイル エラーが発生します。これは実際に達成可能ですか?
それが達成可能であれば、誰かがここで私の間違いを説明してもらえますか;
コンパイル時に次のエラーが発生します。
これは main(); のこの行を参照します。
ios - iOSシミュレーターでの起動時の断続的なSIGINT
シミュレーターでアプリを実行すると、起動時に。でフリーズすることがありSIGINT
ます。途切れる行はさまざまですが、のようなシステムライブラリの呼び出しや、またはlibsystem_c.dylib'pthread_rwlock_unlock$UNIX2003:
のような自分のコードでの呼び出しが含まれています。動作は予測できず、原因がわかりません。これはデバイスでは発生しません。self.view.layer.shadowRadius= 6.0f;
button= [[UIButton alloc] initWithImage:image];
SIGINT
アサートが失敗した場合にデバッグビルドでアプリを強制終了するためにコードで時々使用しますが、この問題はこれらの行の1つまたはその近くでは発生しません。
c - sigint が 1 回ではなく複数回呼び出される (C)
これは私のコードのスニペットです:
および関数 sig_handler:
sighandlerが複数回呼び出されるため、「CTRL + C」を押すと問題が発生します。
例:
- サーバーはリッスンしています。
- 2 x 接続が受信されました。
- 2 x 子供用フォーク;
- 2 x 子は閉じています。
- サーバーを閉じたいので、CTRL + Cを押します。
予想される出力:
received SIGINT, exiting....
実際の出力:
received SIGINT, exiting....
received SIGINT, exiting....
received SIGINT, exiting....
なぜこのような動作になったのですか?
編集:コードが更新されました
これは、1つのフォークが完了し、子が終了したときにサーバーを閉じたときに起こることです:
exit(0)
解決策が見つかりました: 問題は、命令の後に書いていないことでしたdo_child()
...コードが更新されました!
bash - SIGINTはbashスクリプトで読み取りをキャンセルしますか?
いくつかのスクリプトの概念を学ぶために、bash ラッパーを作成しています。アイデアは、bash でスクリプトを作成し、ログイン時にユーザーのシェルとして設定することです。
ユーザーの入力に対して while ループを作成したread
ところ、ユーザーが を入力するたびにスクリプトが中止され、ユーザー セッションが終了するeval
ことに気付きました。CTRL + C
これを避けるためSIGINT
に、トラップ内で何もせずに をトラップしました。
ここで、問題はCTRL + C
、コマンドの半分を入力しても、bash の場合のようにキャンセルされず、単に無視されることCTRL + C
です。
したがって、 と入力すると、必要な の代わりping stockoverf^Cping stackoverflow.com
に取得されます。ping stockoverfping stackoverflow.com
ping stackoverflow.com
それを行う方法はありますか?
c - 出力がリダイレクトされるとSIGINTが失われました。プログラムの終了を検出する方法は?
SIGINTを検出するコンソールプログラムを作成したので、ユーザーがCtrl + Cを押すと、プログラムはいくつかのアクションを実行して終了します。
しかし、パイプを使用してこのプログラムを他のプログラムにリダイレクトすると、たとえば、次のようになります
./my_program | tee xxx
。SIGINTがハンドラーに到達することはありません。このプログラムにもかかわらず終了します。SIGTERMを渡しても効果はありません。Ctrl+Cの後にもSIGTERMはありません。
すべての状況でCtrl+cによってプログラムが中止されたことをどのように検出できますか?
SIGINTとSIGPIPEを使用した私のテストケース:
telnet - telnet catch ctrl+c サーバー
here
のようなソケットサーバーを作成しました。telnetと入力ctrl+c
しても、サーバーは何もしません。どうsignal(SIGINT,SIG_IGN)
すればいいの?
matlab - ctrl+c を繰り返し押す意味はありますか?
多くの場合 (例: matlab を使用)、誤ってプログラムを実行してしまいました。CTRL+C を押して中断しようとします。うまくいくときもあれば、うまくいかないときもあり、プログラムが最終的に停止するまで、私は狂ったように叩き続けます。これらの余分な ctrl+c は何かをしているのですか、それとも単なるレイン ダンスですか?
bash - bashでプロセスの破壊を確実にしますか? (おそらく SIGINT をキャッチ)
2 つの FIFO 間の入出力通信を可能にする IO スクリプトをセットアップしようとしています (1 つの FIFO は入力用で、もう 1 つは出力用です)。
入力を入力している間、サーバーが出力を受信する必要があります。Internals/servout
とはどちらInternals/servin
も FIFO です。tail
現在、入力を待っている間にバックグラウンドで実行することでこれを実装しています。
これは私の現在のコードです:
私が直面している主な問題は、誤って Ctrl-C を入力してスクリプトを終了したときです。この場合、tail -f -n 0 Internals/servout &
コードは引き続きバックグラウンドで実行されます。ご想像のとおり、それは望ましくありません。
tail
SIGINT または同様の信号が送信された場合でも、コマンドが確実に強制終了される方法はありますか? finally
Pythonのキーワードと同じ目的を果たしたりtail
、$$
.
私の悪い習慣について自由にコメントしてください -bash
は私の新しい言語の 1 つであり、建設的な批判は改善するための最も簡単な方法です。