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

ubuntu - Apache 2 の「caught SIGWINCH」エラーとは何ですか?

私のサーバー(ubuntu 8.04)LAMPはdrupal 6を実行しています。トラフィックが多いと、ページの提供が停止します。apache2 の再起動が機能しないため、サービスを再起動する必要があります。

apache2 error.log でこのメッセージを見つけました

[お知らせ] SIGWINCH をキャッチ、正常にシャットダウン

また、Apache が応答を停止したとき、Apache2 のプロセス ID が 12000 前後だったことに気付きました。

アップデート

ご指摘のとおり、キャッチされた SIGWINCH は、Apache サービスの再起動の通知です。私は最大のクライアントで遊んで生き続けました。MaxClients の設定が低すぎるため、「サーバーが MaxClients 設定に達しました。MaxClients 設定を上げることを検討してください」というエラーが発生しましたが、それを修正しました。

PID に関しては、私のインストールにはprefork モジュールがインストールされているため、MaxRequestPerChildに達すると、子プロセスがリサイクルされます。そのため、PID は定期的に上昇しています。しばらくするとApacheが応答しなくなる理由はまだわかりません。

その間、MaxRequestPerChild を上げようとするため、PID はそれほど速く PID max に達しません。現在の制限は 32768 です (これは、新しい debian および ubuntu インストールの標準です)。

ログからの詳細は次のとおりです。

[2009 年 4 月 24 日金曜日 01:48:56] [通知] SIGWINCH をキャッチ、正常にシャットダウン

[Fri Apr 24 01:50:07 2009] [お知らせ] Suhosin-Patch が設定された Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 -- 通常の操作を再開します

[2009 年 4 月 24 日金曜日 17:13:35] [エラー] [クライアント 195.70.62.131] クライアントがホスト名なしで HTTP/1.1 要求を送信しました (RFC2616 セクション 14.23 を参照): /w00tw00t.at.ISC.SANS.DFind:)

[2009 年 4 月 24 日金曜日 17:36:00] [エラー] [クライアント 212.188.33.4] クライアントがホスト名なしで HTTP/1.1 要求を送信しました (RFC2616 セクション 14.23 を参照): /w00tw00t.at.ISC.SANS.DFind:)

[Sat Apr 25 20:05:07 2009] [エラー] [クライアント 84.243.222.12] リクエスト GET HTTP/1.1 HTTP/1.1 の無効な URI

[Sat Apr 25 20:05:12 2009] [エラー] [クライアント 84.243.222.12] スクリプトが見つからないか、stat できません: /usr/lib/cgi-bin/twiki

[Sat Apr 25 20:05:12 2009] [エラー] [クライアント 84.243.222.12] スクリプトが見つからないか、stat できません: /usr/lib/cgi-bin/wiki

[Sat Apr 25 20:05:12 2009] [エラー] [クライアント 84.243.222.12] スクリプトが見つからないか、stat できません: /usr/lib/cgi-bin/wikis

[Sat Apr 25 21:46:46 2009] [エラー] [クライアント 211.68.23.167] リクエスト GET HTTP/1.1 HTTP/1.1 の無効な URI

[2009 年 4 月 26 日 06:13:47] [エラー] [クライアント 86.39.154.89] クライアントがホスト名なしで HTTP/1.1 要求を送信しました (RFC2616 セクション 14.23 を参照): /w00tw00t.at.ISC.SANS.DFind:)

[Sun Apr 26 06:53:07 2009] [notice] グレースフル リスタートが要求され、リスタートを実行中

0 投票する
17 に答える
118178 参照

windows - ctrl-C(SIGINT)をWindows上のアプリケーションに送信できますか?

私は(過去に)クロスプラットフォーム(Windows / Unix)アプリケーションを作成しました。これは、コマンドラインから起動すると、ユーザーが入力した組み合わせを同じ方法で処理しますCtrlCつまり、アプリケーションをクリーンに終了します)。

Windowsで、別の(無関係の)プロセスからのプロセスに相当するCtrl- / SIGINT /を送信して、クリーンに終了するように要求することはできますか(リソースを整理する機会を与えるなど)?C

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でそれを行う一般的な方法は見つかりませんでした。あなたはなにか考えはありますか?