問題タブ [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 投票する
3 に答える
1601 参照

c - SIGTERM で動的に割り当てられた変数を解放するには?

私はこのようなコードに取り組んでいます

プロセスがフォークされると、すべての変数も複製されます。通常、var のすべてのコピーが解放されます。

によってエラーが発生した場合はfork()、作成されたすべてのプロセスにシグナル SIGTERM を送信します。そして、var を解放してアプリケーションを終了する SIGTERM のシグナル ハンドラを作成する必要があります。ただし、free() はそうではないsignal safe functionので、呼び出すべきではありません。しかし、その変数を free() する方法は?

あなたの答えに感謝します...

編集: valgrind は、まだ到達可能な変数も示しています:

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

c - シグナルスタック

シグナルには別のスタックが必要だと読みましたが、なぜ、どのように実装されていると思いますか?

それらは動的に割り当てられていますか、それとも静的に割り当てられていますか? メモリ割り当てはどのように行われますか? すべての信号で同じですか?

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

c++ - Qt: QWebView::linkClicked(QUrl) での応答に問題があります - スロット信号の問題

私はQtでかなり新しいです。

に返信したいlinkClickedですQWebView

私はこのように接続しようとしました:

しかし、私はエラーが発生していました:C:/Documents and Settings/irfan/My Documents/browser1/mainwindow.cpp:9: error: expected primary-expression before ',' token

UI Editing Signals Slots を使用してこれを行うと、次のようになります。

私はスロットのヘッダファイル宣言に持っています:

ソース cpp ファイル内:

これを実行すると、コンパイルして実行されますが、警告が表示されます:

このイベント処理を行う適切な方法は何ですか?

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

c - Cで自分のシェルでフォアグラウンド/バックグラウンドプロセスを適切に待つ方法は?

この前の質問では、私自身のシェル コードのほとんどを投稿しました私の次のステップは、フォアグラウンドとバックグラウンドのプロセス実行を実装し、それらが終了するのを適切に待って、「ゾンビ」のままにならないようにすることです。

バックグラウンドで実行する可能性を追加する前は、すべてのプロセスがフォアグラウンドで実行されていました。そのために、execvp() でプロセスを実行した後、単純に wait(NULL) を呼び出しました。ここで、最後の引数として「&」文字をチェックし、そこにある場合は、wait(NULL) を呼び出さずにバックグラウンドでプロセスを実行します。プロセスはバックグラウンドで正常に実行され、シェルに戻ります。

これはすべて正常に機能しています (私は思います)。現在の問題は、バックグラウンド プロセスが「ゾンビ」のままにならないように、何らかの方法で wait() (または waitpid() ?) を呼び出す必要があることです。それは私の問題です、私はそれを行う方法がわかりません...

私は SIGCHLD を処理し、そこで何かをしなければならないと信じていますが、wait(NULL) を childSignalHandler() に追加しようとしたため、SIGCHLD シグナルがいつ送信されるかをまだ完全には理解していませんが、機能しませんでした。バックグラウンドでプロセスを実行すると、childSignalHandler() 関数が呼び出され、その結果、wait(NULL) が呼び出されました。つまり、「バックグラウンド」プロセスが終了するまでシェルで何もできませんでした。シグナルハンドラーで待機しているため、バックグラウンドで実行されなくなりました。

このすべてで何が欠けていますか?

最後にもう 1 つ、この演習の一環として、プロセスの終了など、プロセスの状態の変化も出力する必要があります。したがって、それに関する洞察も本当に高く評価されています。

これは現時点での私の完全なコードです:

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

c - makefileを適切にコンパイルして実行するにはどうすればよいですか?

この質問はおそらく私の問題を説明するのに最適な質問ではありませんが、これ以上の質問は考えられませんでした。私のmakefileは次のようになります:

コンパイルして実行したいときは、「makerun」を実行します。これに関する問題は、私のプログラムがCtrl + Zによって生成された信号を処理し、「make run」でプログラムを開始すると、信号はプログラム自体ではなく「makerun」に送信されることです。

基本的に、「make run」を呼び出すことは、「make && ./prog」を直接呼び出すことと同じではありません。最初のケースでは、「prog」が最初に終了しない限り、「makerun」は終了しません。

これを回避する方法はありますか?

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

c - WIFSIGNALED、WIFSTOPPED、WIFCONTINUED の C でのテスト ケース

私はwaitpid()とsignal()で遊んでいて、WIFSIGNALED(status) = WIFSTOPPED(status) = WIFCONTINUED (status) = trueを返すための信頼できるテストケースを探していますが、何も見つかりません...

コードをデバッグできるように、それらが true を返すようにする方法を教えてください。

また、これらのマクロをテストするために signal() でどのシグナルをキャッチする必要があるかについてのいくつかのヒントが役立ちます...

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

linux - 信号処理の欠陥を再定義する

これは設計上の決定に関するものであり、別のサービスを採用する場合の長所と短所を理解しています。そのため、2 つの無関係なサーバーを持つ 2 つのサービスがあり、1 つはポート 10000 でリッスンし、もう 1 つは 3 つの異なるポートを介して 3 つの異なる要求に応答する xinetd サーバーです (そのクライアントは nc サーバーのポート 1|ポート 2|ポート 3 を使用してデータを取得します)。

ある日、セキュリティ上の問題により xinetd サーバーを停止する必要があり、最初のサーバーが同じデータを保持しているという理由だけで、最初のサーバーに USR1 シグナルを送信し、同じ公開データを公開することで xinetd サーバーを採用することにしました。したがって、最初のサーバーでシグナル処理を再定義するロジックを追加する必要があります。USR1 (10、16、および 30) を使用する予定です。たとえば、xinetd サーバーで kill -10 first_server を実行すると、最初のサーバーは古いサーバーが送信していたのと同じデータを吐き出し、それでも最初のポートにダンプします。 . Unix シグナルの使用法を悪用し、もちろん POXIS および Linux で事前定義された 10、16、および 30 シグナルの動作を再定義しているため、これは悪い設計であるという議論があります。これは本当に技術的に悪いのでしょうか?システムにどのような害を及ぼすでしょうか?

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

django - Djangoでトランザクションコミット後にコードを実行する

Djangoでトランザクションがコミットされた後にコードを実行する方法はありますか?

オフライン処理のためにいくつかのメッセージをrabbitmqサーバーに送信する必要がありますが、Djangoトランザクションがコミットされる前にメッセージがコンシューマーに届きます。

私のメッセージは、モデルのpost_saveシグナルで送信されます。私が探しているのは、シグナルなどを使用して、コミット後にコードを実行する(トランザクションが失敗した場合は何もしない)同様のメカニズムです。

Djangoでそれを行う一般的な方法は見つかりませんでした。あなたはなにか考えはありますか?

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

c++ - マルチスレッド:Signal vs BusyWait(Polling)、スレッド間条件変数に関する質問

スレッド間通信について一般的な質問があります。

現在、私はたくさんのC ++スレッド(〜15)を使用しています。

それらはすべて、処理するデータを取得するために互いにBusyWait(Polling)を使用しています。ただし、CPU使用率を低く抑えることは困難であり、良好なパフォーマンスを提供し、コンテキストスイッチを多用しないようにします。

だから私は条件変数とシグナルを見ています。スレッドで.Wait()に入り、.Signal()を呼び出す別のスレッドを待つという一般的な概念を理解していると思います。

質問#1)私の問題は概念的なものかもしれませんが、シグナルを待機しているスレッドが待機中にSUSPENDEDになると、それ自体ではアクションを実行できなくなります。とにかくそれがいくつかのアクションを実行するためにそれ自体で目を覚ますようにすることはありますか?

質問#2)さらに、私のクラスは両方向にデータを渡すために使用されます。ただし、ミドルクラスが別のクラスからのシグナルを待機している場合、そのクラスにシグナルを送信することはできません。そのような:

したがって、クラスBがCからの.Signal()に対して.Wait()をオンにしている場合、Aからの新しいシグナルを処理することはできません。

A && Cの両方が同じ「newData」信号Bを送信して、それをウェイクアップすることは可能ですか?信号をA&&Cと区別することは可能でしょうか。

私はACEフレームワークを使用してC++を使用してこれをコーディングしており、Boostに切り替える可能性があります。しかし、これは十分に一般的であり、どのOSにも答えを適用できると思います(うまくいけば)。

ありがとう

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

c++ - シグナル システム コールは、クラスの C++ 静的メンバーで使用できますか?

以下は *nix プラットフォーム全体でサポートされていますか?