問題タブ [signal-handling]
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 - サーバー リスニング機能の C 言語のテスト ユニット。リッスン ブロッキング呼び出しを避ける
pkg_getclient () という名前の関数のテスト ユニットを作成しています。基本的に、クライアントを無期限にリッスンする関数です。
実装は次のとおりです: http://slexy.org/view/s21RBuOUOu (質問テキストのサイズを適切に保つためにそこに貼り付けます)
以下はクライアント - サーバー テストの例です: http://slexy.org/view/s2fS5hBkgI
これは私のユニットテストの現在のステータスです:
pkg_getclient() ブロッキング呼び出しを解除する必要があります。UNIX ベースのシステムだけでなく、Windows にも移植できる必要があります。pkg_getclient() 関数を変更できません。ブロッキング関数はgetclient()内にあります。
シグナル処理を使用してブロッキング呼び出しを中断する方法はありますか? または、これを回避する他の方法はありますか?
c - シグナルハンドラ内でperrorを使用する必要があります
他のstdio関数のperror
ようなユーザースペースバッファがあるため、内部シグナルハンドラを使用する必要がありますか?printf
linux - インストールされているシグナルハンドラーを確認しています
デバッグ目的でSIGSEGVのシグナルハンドラーをインストールするライブラリがあります。SIGSEGVハンドラーは、いくつかの情報を出力してから、プログラムを終了します。
最近、Javaから(JNIを使用して)このライブラリを呼び出す必要がありました。私が遭遇した問題は、JVMが私よりも便利な目的でSIGSEGVのシグナルハンドラーもインストールすることです。
したがって、私が選択したいアクションは、ライブラリがシグナル用にすでにインストールされているシグナルハンドラーを見つけた場合、シグナルをインストールしないということです。
わかりやすくするために、私はsigactioncallを使用しています。
今、私の機能を達成するために私がしなければならないことは次のとおりです。
a。すべての信号をブロックします。
b。sigactionを呼び出し、oactが有効なハンドラーを返すかどうかを確認します。
c。もしそうなら、新しい行為としてoactでsigactionを呼び直してください。
d。UNBLOCK信号。
Bとcは私には面倒なようです。私が望んでいるのは、最初にハンドラーを置き換えてから元のハンドラーに再置き換えなくても、特定の信号に既にハンドラーがあるかどうかを判断できるようにすることです(何も達成されません)。
sigactionよりも細かいものはありますか?
unix - SIGSTOP と SIGTSTP の違いは何ですか?
SIGSTOP シグナルと SIGTSTP シグナルの違いについて疑問に思っています。
python - Python-QTableWidget:ヘッダーの並べ替えがクリックされたときにシグナルをキャッチする方法
tableWidgetself.ui.tableWidget.resizeRowToContents
にすべての行に使用したテキストを入力します。その後self.ui.tableWidget.setSortingEnabled(1)
、並べ替えは期待どおりに機能しますが、行はコンテンツに合わせてサイズ変更されなくなり、実際には以前の高さを保持します。
私の考えは、ヘッダーの並べ替えがクリックされたときにシグナルをキャッチし、self.ui.tableWidget.resizeRowToContents
すべての行をもう一度処理することです。
その信号をキャッチする方法は?
c - グローバル変数を使用するが終了する関数は、シグナル ハンドラでは避ける必要がありますか?
C を使用した UNIX プログラミングについて調べたときに、再入可能に失敗する関数はシグナル ハンドラー内では避ける必要があることを学びましたが、次のような場合:
myExit の場所
そしてfileFdはグローバル変数であり、それがmyExitを再入不可にすることを正しく覚えていれば...しかし、それがプログラムの終了を引き起こしたとしても、シグナルハンドラーでそれを使用することはまだ問題ですか? ありがとう、それがばかげた質問であるならば、どんな助けでも感謝します。
python - python サブプロセスは、子によるシグナル処理を回避します
ええと、スクリプトに usr1 シグナル ハンドラがあります。外部から SIGUSR1 をスクリプトに送信することで、ハンドラーが機能しますが、シグナルは Popen を介して作成した子にも送信されます。これどうやってするの?
c - シグナル ハンドラー コンテキストから ARC プラットフォームのトレースを取得する
SIGSEGV
プログラムが終了する前に、バック トレースをキャッチしてログに出力したいと考えています。これは、後でクラッシュを分析するためです。複数のプラットフォームで動作するソフトウェアに取り組んでいます。backtrace()
x86 プラットフォームでは、glibc関数を使用してこれを簡単に実行できます。ただし、MIPS および ARC プラットフォームでは同じことができません。ここで説明されているように、MIPS アーキテクチャのバック トレースを出力できます。
ARCプラットフォームでも同様のことをしたいと思っています。同様の詳細をどこで取得できるかについて、誰かがいくつかのデータポイントを提供できれば、非常に役立ちます.
編集:
いくつかの調査の結果、関数呼び出し用の ARC プラットフォームでは、スタックが一度に割り当てられるのではなく、部分的に割り当てられることがわかりました。(間違っていたら訂正してください。私はオブジェクト ダンプを調べて、これを理解しました。) したがって、この場合、MIPS とは対照的に、バイナリ コードの解析を行うのは難しいと思います。
別の方法として、インライン アセンブリを Cで記述し、スタック ポインター、フレーム ポインター、分岐リンク レジスタの内容 (点滅) を取得してから、スタックとフレーム サイズを使用してスタックをアンワインドし、各フレームで点滅の値を出力する方法があります。しかし、私はフレームサイズを見つけることができません。
FP、SP、BLINK を取得するサンプル コードを次に示します。
はい、これは良いコーディングではありません! 私は多くの仮定を立てました。しかし、私にとっては、私のボードで動作している限り問題ありません。:)
どんな助けでも大歓迎です。ARC gcc に関する別のリファレンスを次に示します。
python - シグナル処理とユーザー管理のための Python Unix/Windows 抽象化レイヤー
広範なウェブ検索で答えが「いいえ」であると思われる質問をしたいのですが、何か見落としている可能性があります...
Unix と Windows のシグナル処理 (生成された独立したプロセス用) とユーザー管理 (ユーザーとグループのエントリの取得、それらの比較など) の上にある Python 抽象化レイヤーはありますか?
はい、Windows と Unix は根本的に両方の面で異なることを知っていますが、OS 固有の方法は同様のタスクを実行します。したがって、抽象化レイヤーを作成することは悪い考えではないようです。
私が探しているものに最も近いものは、少なくともサブプロセス管理 (およびこれらのサブプロセスをある程度「シグナリング」すること) のために、python-multiprocessing、つまりhttp://docs.python です。 org/dev/library/multiprocessing.html - これは私が探している抽象化の一種ですが、私が望んでいることはまったくできません。
そのような方向に向かう指針はありますか?
Windows でのシグナル処理/ユーザー管理を Unix のように見せるモジュール、またはその逆のモジュールも問題ありません。
c - c での子プロセスのシグナル処理
プロセス間のシグナル処理に関する演習であなたの助けが必要です。些細な質問だと思いますが、どこにも答えが見つかりません。親からファイルに何かを出力し、親から子にシグナルを送信したい場合、子はファイルに出力してから、子から親にシグナルを送信する必要があります。
私が使用しているコードはこれです: