問題タブ [signals]

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 投票する
4 に答える
395 参照

perl - Perl でプロセスを管理する方法はありますか (つまり、実際に機能するスレッドの置き換え)?

私は perl でマルチスレッド アプリケーションを使用しており、スレッド セーフではないいくつかのモジュールに依存する必要があるため、メッセージ パッシング インターフェイスとしてシグナルを使用してfork()ed プロセスを使用しています。kill()

問題は、シグナル ハンドラーが少し不安定で (控えめに言っても)、不適切な状態でプロセスが強制終了されることがよくあることです。

これを行うより良い方法はありますか?

0 投票する
5 に答える
12086 参照

c++ - コマンド ライン インターフェイスで ctrl-break シグナルを処理する方法

始める前に、これがコマンド ライン ツールではなく、独自のコマンド ライン インターフェイスを介してコマンドを受け取るアプリケーションであることを明確にしておきます。

編集:以前の説明についてお詫びしなければなりません。明らかに、説明がうまくできていませんでした。もう1回...

ユーザーからのコマンドを受け入れるコマンドライン インターフェイス アプリケーションを構築しています。シグナルをキャッチするシグナル ハンドラーをセットアップし、アプリケーションを終了するために必要なフラグを設定します。私が抱えている問題は、見つけることができるすべてのコンソール機能がブロックされていることです。つまり、ユーザーがキーを押すまで (または機能によっては入力するまで)、コンソール処理ループを終了する必要があることを検出できません。 )。

非ブロックコンソール対話を行うことができる標準的な方法はありますか、またはシグナルスレッドから終了するだけですべてが適切に処理および解放されるようにプログラムを構成するエレガントな方法はありますか (誤解しないでください) -これを理解してください。シグナリングスレッドからリソースをロックおよび解放することでこれを行う方法は知っていますが、これは面倒になる可能性があるため、むしろ避けたいと思います)

うまくいけば、その説明はより理にかなっています...

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

linux - Gambas を使用した Linux シグナルの処理

特定のファイルが変更されたときに、(まだ未定の) SIGnal を bash スクリプトから Gambas プログラムに送信したいと考えています。

Gambas プログラムでこの SIGNAL を処理するにはどうすればよいですか?

0 投票する
9 に答える
66732 参照

c - sigaction と signal はどう違いますか?

ここにあるアプリに追加のシグナル ハンドラーを追加しようとしていたところ、作成者がsigaction()他のシグナル ハンドラーをセットアップしていたことに気付きました。使うつもりでしたsignal()。慣例に従うには使用する必要がありますsigaction()が、最初から書いている場合はどれを選択すればよいですか?

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

perl - Perlでシグナルをキャッチして処理するにはどうすればよいですか?

エラーをトラップしてPerlを正常に終了する方法はありますか?サーバーで実行されているOSまたは他のアプリケーションからのSIGイベントが原因で失敗する可能性のあるスクリプトに取り組んでいます。このイベントをトラップし、エラーを表示して、スクリプトの実行中に開いたすべてのファイルとその他の属性を閉じた後に終了したいと思います。

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

perl - Windows が Perl の例外をキャッチしないようにするにはどうすればよいですか?

私は、24 時間 365 日稼働する Perl ソフトウェアを持っています。IMAP サーバーへの接続を開いたままにし、新しいメールをチェックしてから、新しいメッセージを分類します。

現在、XPラップトップを時々休止状態にしているユーザーがいます。これが発生すると、サーバーへの接続が失敗し、例外がトリガーされます。通常、呼び出し元のコードはその例外をキャッチし、再接続を試みます。しかし、この場合、Windows (または Perl?) が例外をキャッチし、メッセージ ボックスを介してユーザーに配信しているようです。

そのようなwtfを防ぐ方法を知っている人はいますか?私のコードは「システムが休止状態になりそうです」というシグナルをキャッチできますか?

すでに提起したいくつかのポイントをクリアするには:

  • ユーザーがマシンを休止状態にすることに問題はありません。それに対処する方法を見つける必要があります。
  • 問題の Perl モジュールは例外をスローします。アプリケーションは完全にブラウザ ベースで、Wx や Tk などは使用しませんが、ユーザーは「poll_timer」というタイトルのメッセージ ボックスを受け取ります。そのメッセージ ボックスの内容はまさにその内容です。 $@ の (この例では 'foo bar')。
  • アプリケーションは、perlappを使用して実行可能ファイルにコンパイルされます。ただし、ドキュメントには例外処理については何も言及されていません。
0 投票する
7 に答える
25742 参照

c - popen() または system() を使用せずに名前でプロセスの PID を見つける

プロセス名kill()があり、そのプロセスにシグナルを送信する必要がありますが、呼び出すにはその PID が必要kill()です。私は使用したいだけです:

最後に。プロセスの PID を調べる他の方法はありますか? 私が考えることができる 1 つの方法は、そのプロセスにソケット要求を送信し、その PID を要求することです。

もう 1 つの方法は、私が書いている単純なコードには少し複雑すぎます: pidof コマンドのソース コードが実際に行っていることを行うためです (関数呼び出しを使用しますfind_pid_by_name()が、多くのことを行っています)。

簡単な解決策が不可能な場合は、これを行う必要があります。

戻りコードを確認します。しかし、pkill はすべての Linux マシンで確実に利用できるのでしょうか?

0 投票する
34 に答える
408054 参照

linux - プロセス グループのすべてのメンバーにシグナルを送信する最良の方法は何ですか?

プロセスツリー全体を強制終了したい。一般的なスクリプト言語を使用してこれを行う最善の方法は何ですか? 私は簡単な解決策を探しています。

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

gtk - gtkmm ポップアップ リストからシグナルが 2 回発生する

GTK+ を使用してからしばらく経ちましたが、最後に使用したのは C で、現在のように gtkmm と C++ は使用していません。とにかく、私は解決するのが簡単な問題だと思うものを持っています:

ラジオ ボタンのリストで構成されるポップアップ メニューがあり、そのうちの 1 つをクリックすると何らかのアクションが発生するようにしたいと考えています。コードは次のようになります。

私が見る唯一の問題はMyClass::on_item_activated、以前に選択されていないラジオボタンがメニューから選択されたときに2回呼び出されることです。すでに選択されているラジオボタンがクリックされたときに一度だけ呼び出されます。

最初の発火は「何かがアクティブではなくなった」ということで、2 回目は新しいラジオ ボタンのアクティブ化のためだと思います。私が正しいか間違っているかにかかわらず、質問は同じです。クリックごとに 1 回だけハンドラーにアクションを実行させるにはどうすればよいでしょうか? ハンドラーを一度だけ呼び出す必要があるか、コールバックが「重複」しているかどうかを確認するために内部からチェックするものが必要です。

0 投票する
8 に答える
4817 参照

signals - ゼロ除算による SIGFPE を無視できますか?

特定の状況で停止するために、故意にゼロ除算を実行する (そして結果を揮発性変数に格納する) プログラムがあります。ただし、ゼロ除算を実行するマクロを変更せずに、この停止を無効にできるようにしたいと考えています。

無視する方法はありますか?

使ってみました

ただし、「浮動小数点例外(コアダンプ)」というメッセージで停止します。

実際には値を使用しないので、変数に何が割り当てられているかはあまり気にしません。0、ランダム、未定義...

編集:これが最も移植性が高いわけではないことはわかっていますが、多くの異なる OS で実行される組み込みデバイスを対象としています。デフォルトの停止アクションはゼロ除算です。他のプラットフォームでは、ウォッチドッグによる再起動を強制するために別のトリックが必要です (割り込みを無効にした無限ループなど)。PC (Linux) のテスト環境で、assert などに頼らずに、0 除算での停止を無効にしたかったのです。