問題タブ [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.
c - sigprocmask() の Set と Oldset
の使い方がよくわかりませんsigprocmask()
。特に、set
andoldset
とその構文がどのように機能し、どのように使用するかについて説明します。
例を挙げて説明してください。ブロックするには、SIGUSR1 を数秒間言ってから、ブロックを解除して処理します。
c - 信号を使用して奇数と偶数を出力する
自然な番号を印刷する必要があります。1,2,...n 親プロセスがすべての奇数を出力し、子プロセスがすべての偶数を出力するように、これらすべてを POSIX シグナルを使用して行う必要があります。これを達成するにはどうすればよいですか?
出力は次のようになります。
親 : 1
子 : 2
親 : 3
...
perl - LWP::UserAgent リクエスト メソッドの真のタイムアウト
信頼できないサーバーへのリクエストを実装しようとしています。リクエストはあると便利ですが、perl スクリプトが正常に完了するために 100% 必要というわけではありません。問題は、サーバーがときどきデッドロックし (理由を突き止めようとしています)、要求がまったく成功しないことです。サーバーはそれがライブであると認識しているため、ソケット接続を開いたままにしておくため、LWP::UserAgent のタイムアウト値は何の役にも立ちません。リクエストに絶対タイムアウトを強制する最良の方法は何ですか?
参考までに、これは DNS の問題ではありません。デッドロックは、Postgres データベースに同時にヒットする膨大な数の更新と関係があります。テスト目的で、本質的に while(1) {} 行をサーバーの応答ハンドラに入れました。
現在、コードは次のようになっています。
シグナルを使用してタイムアウトをトリガーしようとしましたが、うまくいかないようです。
私が使用する最終的な回答は、誰かがオフラインで提案したものですが、ここで言及します。何らかの理由で、SigAction は機能しますが、$SIG(ALRM) は機能しません。理由はまだわかりませんが、これは動作することがテストされています。2 つの作業バージョンを次に示します。
c++ - 浮動小数点例外の C++ 例外への変換
x86 Linux で浮動小数点例外 (シグナル) を C++ 例外に変換することは可能ですか?
これはデバッグ用であるため、移植性や不完全性は問題ありません (たとえば、すべてのデストラクタが呼び出されることが 100% 保証されていない場合)。
c++ - 信号をキャッチしてユーザーに問題を報告するポータブルな方法
なんらかの奇跡によってプログラムでセグメンテーション違反が発生した場合、SIGSEGVをキャッチし、ユーザー(おそらくGUIクライアント)に重大な問題が発生したことを単一のリターンコードで知らせたいと思います。同時に、どの信号がキャッチされたかを示す情報をコマンドラインに表示したいと思います。
今日、シグナルハンドラは次のようになります。
このスレッドから、シグナルハンドラーから非リエントラント関数を呼び出すのは悪であると読んだので、上記の恐怖の叫び声を聞くことができます。
信号を処理してユーザーに情報を提供するためのポータブルな方法はありますか?
編集:または少なくともPOSIXフレームワーク内で移植可能ですか?
c - SIGPIPEを防ぐ(または適切に処理する)方法
TCPまたはローカルUNIXソケットで接続を受け入れ、単純なコマンドを読み取り、(コマンドに応じて)応答を送信する小さなサーバープログラムがあります。
問題は、クライアントが答えに興味がなく、場合によっては早期に終了する可能性があることです。そのため、そのソケットに書き込むとSIGPIPE
、サーバーがクラッシュします。
ここでのクラッシュを防ぐためのベストプラクティスは何ですか?行の反対側がまだ読んでいるかどうかを確認する方法はありますか?(select()
ソケットは書き込み可能であると常に表示されるため、ここでは機能しないようです)。SIGPIPE
または、ハンドラーでをキャッチして無視する必要がありますか?
python - Pythonシグナルの問題:別のシグナルハンドラーの実行中にSIGQUITを受信した場合、SIGQUITハンドラーは実行を遅らせますか?
次のプログラムは非常に単純です。0.5秒ごとに1つのドットを出力します。SIGQUITを受信すると、10個のQを出力します。SIGTSTP (Ctrl- Z)を受信すると、 10個のZを出力します。
Qの印刷中にSIGTSTPを受信した場合、10個のQを実行した後、 10個のZを印刷します。これは良いことです。
ただし、Zの印刷中にSIGQUITを受信すると、その後のQの印刷に失敗します。代わりに、KeyboardInterruptを介して手動で実行を終了した後にのみそれらを出力します。QをZの直後に印刷したい。
これはPython2.3を使用して発生します。
私は何が間違っているのですか?
python - C にある sighold および sigrelse 関数に相当する Python は何ですか?
Python シグナル モジュールには、signal.h を使用して、C で見られる sighold および sigrelse 関数に似たものはないようです。あらゆる種類のPythonに相当するものはありますか?
どうもありがとう!
.net - スレッドが.NETで別のスレッドにシグナルを送るようにする最良の方法は何ですか?
ユーザーが実行を中断したい場合は、スレッドに別のシグナルを送信する必要がありますが、シグナル伝達/シグナルチェックメカニズムを実装する方法がわかりません。プロジェクトにシングルトン ( global などbool
) を使用したくありませんが、代替手段はありますか?
このスレッドでは、人々は C++ での適切な構造を提案していますが、.NET で同様のものについては知りません。誰か光を当ててくれませんか?