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

c - SIGINT シグナルが無視されたときに文字列を出力する

SIGINT信号を無視し、無視されたというメッセージも出力するプログラムを書くように頼まれました。signalこれは、およびのマニュアル ページを参照した後に思いついたものsigactionです。

しかし、信号が無視されたときにメッセージを出力する方法について混乱しています。もう 1 つのオプションは、独自のシグナル ハンドラー関数を定義することですが、それはそれを無視することにはなりませんよね?

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

bash - Ctrl-C をキャプチャし、それを使用して無限ループを適切に終了する方法

理由もなくプログラムが停止することがあるため、プログラムを無限ループ内で実行しようとしています。ただし、プログラムが再起動されないように Ctrl-C を押したいと思います。

Ctrl-C でプログラムを強制終了させたくありません。プログラムが終了するまで待ってから、再起動しないでください。

theprogramワイン プログラム (utorrent) です。

theprogram右上の「x」をクリックするのと同じように安全に終了するようにする方法を教えてくれたボーナスポイント。コマンド ラインから手動killで実行するか、Ctrl-C キーを押すと、クリーンアップ コードを実行できません。したがって、再起動を停止しようとする私の試み。

SIGINT のトラップに関する他のいくつかの質問を確認しましたが、これを行う方法がわかりませんでした。

誰でもこのコードを修正できますか? 私のコードはtheprogram、Ctrl-C が押されると、theprogramクリーンアップせずに終了してループを終了するようです。

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

python - Python- SIGINT を使用したスレッドの強制終了- グローバル変数が正しく参照されていない

私は自分のスレッドが sigint をキャッチできる場所に到達しようとしています。kill_receivedシングルトン リストが and の同じ名前空間にsignal_handler()ありdo_the_uploads() 、同じメモリ ロケーションが参照されているように見えます。"print kill_received[0]"しかし、C の実行中に C を制御すると、 Ctrl-C を押したために True であるべきときにFalse が出力されていることがわかります。

メインスクリプトから:

アップデート:

まだ成功していませんが、構文を次のように変更しました。

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

c - SIGINT のシグナルハンドラ

私は次のコードに取り組んでいます。プログラムは、sigaction で SIGINT を処理できる必要があります。これまでのところ、ほぼ完了していますが、2 つの問題が発生しました。
最初の問題は、3 秒以内に 3 つのシグナルを受信した場合、プログラムが「シャットダウン中」と出力してステータス 1 で終了することです。
2 番目の問題は、gettimeofdaystruct timevalを使用してシグナルの到着時間に関する秒単位の時間を取得していることですが、ここでも失敗しました。 試してみると、 3秒以内にctrl+3回押したつもりでも無限ループに陥ってしまいました。Cまた、結果の秒数は非常に大きな数値です。
誰かがこれら2つの問題を解決するのを手伝ってくれることを願っています. これがコードです

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

bash - Ctrl+c でシェル コマンドを終了できない

以下のステートメントを適切bashに終了できない理由を誰か教えてください。Ctrl+c

このステートメントを実行すると、2 つのbashプロセスと 1 つのtailプロセスが開始され (get from ps auxf)、次に入力Ctrl+cされ、プロンプトが終了しませんbash。この時点で、2 つのプロセスがまだ実行されているbash間に 2 つのプロセスが停止していることがわかります。tailに何かを入力する/tmp/a.txtと、bash プロンプトに入ることができます。

私が欲しいのは、入力してから、関連するプロセスを残さずにプロンプ​​トをCtrl+c終了することです。bash

誰かがこのステートメントの正確なプロセスを説明してくれると、よりありがたいでしょう。たとえば、パイプが bash フォークを引き起こしたり、何かがどこかにリダイレクトされたりするなどです。

2014 年 10 月 9 日更新:

役に立つ場合に備えて、ここでいくつかの更新を提供します。私の導入ソリューションは、次の 2 つの要素で似ています。

  1. tmp pid ファイルを使用する

    /li>
  2. trap like:trap "rm ${tail_pid} 2>/dev/null; kill 0 2>/dev/null; exit;" INT TERMを使用して、関連するプロセスを強制終了し、残りのファイルを削除します。

kill 0 2これは bash 固有であり、0 は現在のプロセス グループ内のすべてのプロセスを意味することに注意してください。このソリューションでは tmp pid ファイルを使用しましたが、tmp pid ファイルを使用しない他のソリューションも期待しています。

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

bash - bashで、スクリプトを停止せずにSIGINTをキャッチして処理する方法は?

のように見えます

SIGINTキャッチされたらすぐにスクリプトを停止します。その後、on_sigintが実行されます。SIGINTスクリプトを停止せずに処理することはできますか?