問題タブ [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 に答える
731 参照

c - pthread_sigmask が GDB に干渉する

私は、シグナル処理に関する特定の要件を備えた Linux でマルチスレッド プログラムに取り組んできました。たとえば、単一の Ctrl-C 入力の統計を出力するプログラムが必要です。

pthread_sigmask と sigwait を使用してこれを実装しました。つまり、残りのスレッドを作成する前に、メイン スレッドで重要でないシグナルをすべてブロックし、sigwait でブロックされた「キャッチャー」スレッドを開始します。

初期化 (メイン):

キャッチャー スレッド ルーチン:

すべてが期待どおりに機能しますが、キャッチ メカニズムにより、GDB がプログラムを一時停止できなくなります (SIGINT ルーチンがトリガーされます)。どうすればこれを修正できますか?

ありがとう

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

java - Cygwin CTRL-C (シグナル割り込み) が正しく機能しない - JVM シャットダウン フックが開始しない

プログラムの終了/中断をクリーンアップするためにシャットダウン フックを利用する Java アプリケーションに取り組んでいますが、Cygwin の CTRL-C の実装がシャットダウン フックをトリガーしないように見えることに気付きました。表面的には、プロセスを中断し、制御をコマンド ラインに戻したように見えますが、プロセスのシャットダウン フックはまったくトリガーされないため、クリーンアップは行われません。

cmdではキャッチされますが、さまざまな制約があるため、どうにかしてCygwinで動作させる必要があります。

Cygwin を介して実行中のプロセスで SIGINT を起動する方法はありますか、または中断と終了をクリーンアップするために使用できるシャットダウン フックの代替手段はありますか?

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

c++ - SIGINT に引数を渡すことはできますか?

プログラムの SIGINT 呼​​び出しで使用できるように、いくつかの追加の引数を渡そうとしていますが、コンパイル エラーが発生します。これは実際に達成可能ですか?

それが達成可能であれば、誰かがここで私の間違いを説明してもらえますか;

コンパイル時に次のエラーが発生します。

これは main(); のこの行を参照します。

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

ios - iOSシミュレーターでの起動時の断続的なSIGINT

シミュレーターでアプリを実行すると、起動時に。でフリーズすることがありSIGINTます。途切れる行はさまざまですが、のようなシステムライブラリの呼び出しや、またはlibsystem_c.dylib'pthread_rwlock_unlock$UNIX2003:のような自分のコードでの呼び出しが含まれています。動作は予測できず、原因がわかりません。これはデバイスでは発生しません。self.view.layer.shadowRadius= 6.0f;button= [[UIButton alloc] initWithImage:image];

SIGINTアサートが失敗した場合にデバッグビルドでアプリを強制終了するためにコードで時々使用しますが、この問題はこれらの行の1つまたはその近くでは発生しません。

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

c - sigint が 1 回ではなく複数回呼び出される (C)

これは私のコードのスニペットです:

および関数 sig_handler:

sighandlerが複数回呼び出されるため、「CTRL + C」を押すと問題が発生します。
例:

  1. サーバーはリッスンしています。
  2. 2 x 接続が受信されました。
  3. 2 x 子供用フォーク;
  4. 2 x 子は閉じています。
  5. サーバーを閉じたいので、CTRL + Cを押します。

予想される出力:
received SIGINT, exiting....
実際の出力:
received SIGINT, exiting....
received SIGINT, exiting....
received SIGINT, exiting....

なぜこのような動作になったのですか?

編集:コードが更新されました
これは、1つのフォークが完了し、子が終了したときにサーバーを閉じたときに起こることです:

exit(0)解決策が見つかりました: 問題は、命令の後に書いていないことでしたdo_child()...コードが更新されました!

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

bash - SIGINTはbashスクリプトで読み取りをキャンセルしますか?

いくつかのスクリプトの概念を学ぶために、bash ラッパーを作成しています。アイデアは、bash でスクリプトを作成し、ログイン時にユーザーのシェルとして設定することです。

ユーザーの入力に対して while ループを作成したreadところ、ユーザーが を入力するたびにスクリプトが中止され、ユーザー セッションが終了するevalことに気付きました。CTRL + C

これを避けるためSIGINTに、トラップ内で何もせずに をトラップしました。

ここで、問題はCTRL + C、コマンドの半分を入力しても、bash の場合のようにキャンセルされず、単に無視されることCTRL + Cです。

したがって、 と入力すると、必要な の代わりping stockoverf^Cping stackoverflow.comに取得されます。ping stockoverfping stackoverflow.comping stackoverflow.com

それを行う方法はありますか?

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

c - 出力がリダイレクトされるとSIGINTが失われました。プログラムの終了を検出する方法は?

SIGINTを検出するコンソールプログラムを作成したので、ユーザーがCtrl + Cを押すと、プログラムはいくつかのアクションを実行して終了します。

しかし、パイプを使用してこのプログラムを他のプログラムにリダイレクトすると、たとえば、次のようになります ./my_program | tee xxx 。SIGINTがハンドラーに到達することはありません。このプログラムにもかかわらず終了します。SIGTERMを渡しても効果はありません。Ctrl+Cの後にもSIGTERMはありません。

すべての状況でCtrl+cによってプログラムが中止されたことをどのように検出できますか?


SIGINTとSIGPIPEを使用した私のテストケース:

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

telnet - telnet catch ctrl+c サーバー


here のようなソケットサーバーを作成しました。telnetと入力ctrl+cしても、サーバーは何もしません。どうsignal(SIGINT,SIG_IGN)
すればいいの?

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

matlab - ctrl+c を繰り返し押す意味はありますか?

多くの場合 (例: matlab を使用)、誤ってプログラムを実行してしまいました。CTRL+C を押して中断しようとします。うまくいくときもあれば、うまくいかないときもあり、プログラムが最終的に停止するまで、私は狂ったように叩き続けます。これらの余分な ctrl+c は何かをしているのですか、それとも単なるレイン ダンスですか?

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

bash - bashでプロセスの破壊を確実にしますか? (おそらく SIGINT をキャッチ)

2 つの FIFO 間の入出力通信を可能にする IO スクリプトをセットアップしようとしています (1 つの FIFO は入力用で、もう 1 つは出力用です)。

入力を入力している間、サーバーが出力を受信する必要があります。Internals/servoutとはどちらInternals/servinも FIFO です。tail現在、入力を待っている間にバックグラウンドで実行することでこれを実装しています。

これは私の現在のコードです:

私が直面している主な問題は、誤って Ctrl-C を入力してスクリプトを終了したときです。この場合、tail -f -n 0 Internals/servout &コードは引き続きバックグラウンドで実行されます。ご想像のとおり、それは望ましくありません。

tailSIGINT または同様の信号が送信された場合でも、コマンドが確実に強制終了される方法はありますか? finallyPythonのキーワードと同じ目的を果たしたりtail$$.

私の悪い習慣について自由にコメントしてください -bashは私の新しい言語の 1 つであり、建設的な批判は改善するための最も簡単な方法です。