問題タブ [inetd]
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.
network-programming - inetd を使用するか使用しないか...ネットワーク サーバー プログラムで inetd を使用する必要があるのはいつですか?
ネットワークサーバーとして機能するプログラムを管理するために inetd を使用するかどうかの選択を促す、現実世界の考慮事項を簡潔に説明できる人はいますか?
(inetd を使用すると、プログラム内のネットワーク コードに関する要件が変更されると思いますので、間違いなくプログラミング関連であり、一般的な IT ではないと思います)
質問は、inetd によって管理される制御プログラムを使用してネットワーク リスナーを開始する、私が見た実装に基づいています。ネットワーク リスナーは永久に実行され、一定の負荷がかかります。教科書の inetd の使用プロファイル (オンデマンド、使用頻度の低い、軽量) にはうまく適合しないように思われ、より一般的な質問に興味を持ちました。
python - 奇妙なスレッド化されたオープン fifo の問題をデバッグするには?
Web サービスは、USR1 シグナルを受信したときにそのデータの一部を公開するように構成されています。信号は、xinetd サーバーがリモート クライアント (nc myserver 50666 など) から要求を受信すると送信されます。Web サーバーが USR1 信号を受信すると、専用の fifo パイプを開き、そのデータをパイプに書き込み、パイプを閉じます。パイプ。その間、xinetd サーバーはパイプを読み取り、リモート クライアントにフィードします。
ほとんどの場合、それらは問題なく機能しますが、何らかの理由でクライアントが複製レコードを受け取ることがあります。ログから、パイプが適切に閉じられず、キャッシュが残っているように見えます。そのため、次にサービスを提供するときに、以前と現在の両方がクライアントに送信されます。問題は、再現しようとすると常に発生するわけではないことです。残念ながら、一度再現できませんでした。
以下は、プロセスを示す簡単なスニペットです。
ウェブサーバー: (webserver.py)
xinetd.d サーバー: (spitter.py)
では、重複の原因となったのは正確には何だったのでしょうか。それを引き起こす方法は?現在の修正では、パイプファイルのリンクを解除し、残り物を避けるために毎回再作成していますが、それが適切な解決策であるかどうかはわかりません.
c++ - パイプが標準出力に書き込むときに write() でパイプを終了するのはなぜですか?
別のスレッドで popen("myCommand", "w") ファイル記述子に書き込むサーバー アプリケーションがあり、popen() に渡されたコマンドが標準出力または標準エラー出力に出力される場合、アプリケーションは終了します。ただし、これはサーバー アプリケーションが inetd 経由で呼び出された場合のみの問題であり、ssh を使用してサーバーを起動した場合、この問題は発生しません。
同様に、サーバー アプリケーションが別のスレッドで popen("myCommand2", "r") ファイル記述子から読み取り、 popen() に渡されたコマンドが stderr への出力をもたらす場合 (stdin はパイプに送られます)、アプリケーションが終了します。繰り返しますが、これは inetd 召喚でのみ発生し、ssh 召喚では発生しません。
c++ - inetd で呼び出されたサーバー アプリケーションに gdb をアタッチできないのはなぜですか?
inetd を使用してクライアント用に呼び出すことができるサーバー アプリケーションがあります。しかし、inetd で起動されたサーバー プロセスにアタッチしようとすると、次の応答が返されます。
c++ - 通常の方法が失敗したときにLinuxで実行可能ファイルの場所を見つける方法は?
別の質問では、答えは、を使用する Unix/proc
では、本当に直接的で信頼できる方法はreadlink("/proc/self/exe", buf, bufsize)
次のようにバックアップ ソリューションを提供することであると述べています。
/proc のない Unix の場合 (つまり、上記が失敗した場合):
- argv[0] が "/" (絶対パス) で始まる場合、これがパスです。
- それ以外の場合、argv[0] に "/" (相対パス) が含まれている場合は、それを cwd に追加します (まだ変更されていないと仮定します)。
- それ以外の場合は、ディレクトリで
$PATH
実行可能ファイルを検索しますargv[0]
。
その後、実行可能ファイルが実際にシンボリック リンクではないかどうかを確認するのが妥当な場合があります。それがシンボリックリンクディレクトリに対して相対的に解決されている場合。
私の場合、残念ながら、上記のいずれも機能しません。
/proc/self/exe exists
readlink()
しかし、許可が拒否されたために失敗します errno 13.- には、絶対パスまたは相対パス
argv[0]
はありません。/
- には
$PATH
、 にある実行可能ファイルが含まれていませんargv[0]
。
この問題は、sgid アプリケーションの実行時にも発生するようです。私の場合、sgid ではなく、inetd の起動です。
java - xinetdを介してJavaサーバーからクライアントIPを取得する方法は?
xinetd スーパーサーバーを介して小さな Java サーバーを実行しています。元のクライアント IP を取得したいのですが、ストリームが xinetd と Java (stin/stdout) の間にあるため取得できません。
誰かが xinetd logfile を見ずにクライアント IP を取得する方法を知っていますか? (私には悪い解決策のようです)
ありがとう !
python - Python:inetdからWSGIサーバーを実行しますか?
タイトルが示すように、(x)inetdからWSGIサーバーを実行することは可能ですか?
ruby - xinetdを介してRubyスクリプトからクライアントIPを取得する
ストリームソケットを介してxinetdによって起動されるRubyスクリプト内からクライアントIPアドレスを取得するにはどうすればよいですか?PHPでは私はただ使うでしょうstream_socket_get_name(STDIN, true);
前もって感謝します!
tcp - ポートが接続されているときにプロセスを開始する
同じ LAN 上の多数のワークステーションのいずれかからデータのユニキャスト要求を発行する単一のクライアントを作成したいと考えています。クライアントはおそらく Linux を実行しますが、ワークステーションは任意の OS を実行できます。各ワークステーションでデーモンを実行することを回避しながら、数秒以内にリクエストに応答させることはできますか? サービスはあまり使用されない可能性があり、別のプロセスでワークステーションに負担をかけたくないため、デーモンの作成を避けたいと考えています。
c - ソケット記述子からの IP/ポートの回復
接続しているクライアントの IP とポートを出力するサーバーを実行する必要があるinetd のクローンを作成しています。
ソケット記述子でSTDIN
上書きするので、これを行うための最初の解決策は、必要な情報を含む構造を回復することでした。ただし、これをで行うと、すべてのビットが 0 に設定された空の構造体が返されます。STDOUT
sockaddr_in
getsockname()
私のアプローチの何が問題なのか、何か考えはありますか? IP/ポートを回復するために使用できる他の方法はありますか?
ありがとう