問題タブ [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.

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

sockets - (x)inetd は接続されたソケットをどのように STDIN/STDOUT/STDERR に「分割」しますか?

(x)inetd はほとんどのデーモンと同じようにaccept()機能し、監視しているポートに接続するとソケットが作成されると思います。しかし、どういうわけか、対象のサービス プログラムを処理する前に、fork()このexec()双方向ソケットを 3 つの標準 I/O 記述子である STDIN、STDOUT、および STDERR に変換することができます。

私は自分のバージョンの inetd をロールバックせずにこの動作を無効にする方法を尋ねてきましたが、成功しませんでした。ファイル記述子 0、1、および 2 を単一のソケットに再「結合」する方法の手がかりになる可能性があるため、この方法で質問することにしました。

サービス プログラムが単一のソケットを介して双方向に通信できるようにしたい理由は、単一の双方向ソケットに基づく I/O インフラストラクチャを使用する必要があるためです。

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

service - OSX と CVSROOT

私はコンピューター OS X Mountain Lion 10.8.5 サーバーで使用しています。他のコンピュータが後でそのリポジトリを使用できるように、CVS を構成したいと考えています。

  1. xinetd (できれば) または inetd を構成して起動する方法を説明してもらえますか。ディレクトリ /etc/xinetd.d は空です (サービスがそれを使用していないことを意味します)。「/System/Library/StartupItems/IPServices/IPServices start」と入力すると、「command not found」と表示されます。

  2. Internet Services を設定して、私の CVS リポジトリがどこにあり、リッスンするポートを確認する方法 => ポート 2401 を設定する必要があります。

  3. /etc に inetd.conf ファイルが見つかりません - なぜですか? なるほど。

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

python-3.x - Pythonでサービスからユーザーに通知する

次のテキストでは、「書き込み」という単語は、別のユーザーの tty にメッセージを書き込む UNIX 書き込みコマンドを指します。

任意のユーザーに通知する必要があるサービスを (inetd で実行していますが、それは問題ではありません) 実行しています。今までサブプロセスで書き込みコマンドを呼び出そうとしていました。しかし、それは常に機能するとは限らず、一部のマシンでは次のようなエラー メッセージが表示されます。

(サービスはnobodyとして実行されていることに注意してください。) mesgで端末への書き込み許可をオンにします。そこで、同じことを行う inetutils-talkd (GNU 実装) を調べました。ttymsg 関数を使用していることを確認し、この関数が私が望むことを実行すると信じていますが、この関数は python では利用できないと思います。

したがって、主な質問は次のとおりです。pythonにttymsg関数のようなものはありますか、または、どうすれば書き込みを取得して、やりたいことを実行できますか?

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

perl - perl cgi を使用して 1 日あたり 10 未満の HTTP リクエストを処理する最も効率的な方法

当社は 100 を超えるサーバーを管理しており、http を使用して 1 日に 1 回か 2 回、基本的な使用状況に関する情報をこれらのサーバーに「問い合わせ」たいと考えています。使用情報は perl cgi スクリプトで簡単に見つけることができます。スクリプトの作成とテストを容易にする http インターフェースが必要です。Apache や nginx+fcgiwrap で 1 日に 1 つか 2 つのリクエストを処理するのはやり過ぎのようです。私たちは、openbsd-inetd (すべてのサーバーに既にインストールされています) を使用して、要求を perl cgi スクリプトに簡単に渡して終了できる Web サーバーを起動することを考えていました。これを行うための良い代替手段は何ですか?

私はこれperlscript.plを機能させることができましたが、それが正しいアプローチであるかどうかはわかりません。

持つinetd.confことで

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

fork - xinetd/inetd を使用して、サーバーが fflush() を呼び出す必要があるのはなぜですか?

xinetd (私が読んだもの) 上のすべてのプログラムは、fflush() を呼び出します。なんで?

たとえば、Inetd-ウィキペディア

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

c - inetd は受信データの送信先プロセスをどのように認識しますか?

inetd/xinetd サービスをスタンドアロン サービスに置き換えようとしています。これを行うことができる最も簡単なことは何ですか? 開始するための標準コードはありますか?

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

linux - tftp 経由でシンボリック リンクにアクセスする

私は and を使用しGNU inetdていますがtftpd(下cygwinにありますが、それは問題ではありません)、いくつかの異なるファイルのみを指す多くのシンボリック リンクが必要ですtftp

tftp ディレクトリは次のようになります。

そしてtftpはこれを言います:

使ったln -s file.bin link.bin

tftpd はシンボリックリンクを処理できますか? 私は何を間違っていますか?

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

linux - ファイル転送後の TFTPD の終了

の次のエントリを使用して開始inetutils tftpdされるものを使用しています。inetdinetd.conf

(root アカウントと /home ディレクトリの使用は無視してください。これはテスト目的のためのものであり、後で変更されます)。

inetdバージョンはinetd (GNU inetutils) 1.7

tftpdバージョンはtftp-hpa 5.2, with remap, with tcpwrappers

すべて正常に動作しますが、問題は、ファイル転送ステータスに関する情報がないことです。に依存するスクリプトが 10 個以上あることを念頭に置いてtftpd、次のいずれかを行う必要があります。

  • ファイル転送またはエラーの後に終了tftpdします (バックグラウンドで何もせずに実行し続けるため)

  • 私ができる方法で、grep sedまたは少なくともファイル転送ステータスを表示するようにします$?

これは可能ですか、そうでない場合は、他のどのtftpdサーバーを使用すればよいですか?

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

c++ - デーモンが inetd 経由で実行されると、xerces-c ライブラリ関数が NULL を返す

私のアプリケーションは、ユーザーからいくつかの事前定義されたコマンドを受け取り、サーバー側に存在する XML ファイルから取得したそれぞれの出力を表示するサーバー アプリケーションです。

XML ファイルの解析には、Apache の xerces-c ライブラリ バージョン 3.1.2 を使用しています。端末で手動で実行すると、アプリケーションは正常に動作します。

しかし、telnet 経由でアプリケーションに入力を与え、リモート システムでも出力を受信できるように、ネットワーク上の telnet 経由でアプリケーションを実行したかったのです。このために、inetd スーパー サーバーを使用し、inetd.conf の次の行に追加しました。

次に、/etc/services の行の下に追加して、ポート 5000 でリッスンするようにします。

その後、アプリケーションに接続しようとすると、以下のメッセージが表示されました。

上記の接続が閉じられたというメッセージが表示されたとき、inetd でアプリケーションを適切に構成していないと思いました。そのため、バイナリを余分なライブラリを使用しない単純なバイナリに置き換えました。シンプルな cin と cout だけで、完璧に機能しました。

次に、アプリケーションに問題があることが判明したため、実際に何が起こっているのかを特定するために、多くの cout を配置しました。これにより、xerces-c XML 解析ライブラリ関数の 1 つが NULL を返していることがわかりました。この NULL 参照を使用して、以下の行で関数を呼び出そうとしています。これにより、アプリケーションが起動するとすぐにダンプが作成されます。

しかし、端末でアプリケーションを手動で実行すると、同じ機能が正常に機能します。完全なアプリケーションは少し大きいので、問題を再現するデモ コードを作成しました。これが私のコードです:

上記のコードを手動でコンパイルして実行すると、「Doc is NULL」と表示され、ルート要素のタグ名を正常に出力する if 条件には入りませんが、このアプリケーションを inetd の背後で実行し、telnet で接続すると、それが表示されます。 「Doc is NULL」ステートメントと、その同じメッセージの後に「接続が外部ホストによって閉じられました」。私のアプリケーションはおそらくダンプするでしょう。

正確にどこを見ればいいのかわからないので、今は少し頭がおかしいです。同じコードを手動で実行すると機能しますが、inetd を介しては機能しません。したがって、共有ライブラリを使用する inetd を介してプロセスを実行する際に、特別な注意を払う必要があるのではないかと考えています。ここでは、XML 解析に xerces-c 共有ライブラリを使用しています。または、私の理解やコードに他に何が間違っている可能性がありますか。アプリケーションを手動で実行すると同じライブラリ関数が完全に正常に機能し、inetd を介して実行すると機能しないのはなぜですか?

inetd の代わりに xinetd を使用して同じことを試みましたが、結果は同じでした。

0 投票する
0 に答える
936 参照

c++ - QT を使用した単純なデーモン サーバー

Linux OS で Inetd/xinetd と連携するサーバー/クライアント プログラムを作成するために、Qt を使用しようとしています。

このテキストでサービス構成ファイルを /etc/xinetd.d/testServ に追加しました

次に、この行を /etc/services に追加しました

指定されたポートを使用してサーバーに接続する特別なクライアント プログラムを作成しましたが、これは問題なく動作します。

問題はサーバー プログラムにあります。サーバープログラムのメイン関数でこのコードを書きました

サーバー プログラムの問題は、メイン関数の 2 行目にあり、この行以降はプログラムが続行されません。この行の後に何かを印刷すると画面に表示されませんが、この行の前に何かを印刷すると印刷メッセージが表示されます。Inetd/xinetd が動作しない理由がわかりません QApplication app(argc, argv);

この行と他の行(app.exe)を削除すると、プログラムは直接終了しました。

オブジェクトclientproc(....)で何度も使用しているため、QApplicationが必要です。

この問題を解決して、qt を Linux の inetd/xinetd で動作させるのを手伝ってくれませんか。