1

Windows で Cygwin を介して inetd を構成し、サービスとして開始しました。

スクリプト:

use strict;
use warnings;

use IO::Socket;
use IO::Handle;
use IO::File;
use IO::Select;

print "input something\n";
STDOUT-> autoflush (1);

my $data = <STDIN> || die "(Failed reading STDIN) $^E (Error) $! (End)\n";

コマンドラインで:

telnet localhost <port>

次のようにすぐに失敗します。

(Failed reading STDIN) The parameter is incorrect (Error) Bad file descriptor (End)

Google全体を検索しましたが、解決策が見つかりませんでした。誰かがそれにいくつかの光を当てることができますか?

感謝!


更新: 返信ありがとうございます。IO::Socket が Telent サーバーを作成しないことはわかっていますが、cygwin inetd をセットアップすることで、1 つになります。ポートへの Telnet が機能し、inetd.conf 内のスクリプトが呼び出されます。また、STDOUT も機能します。機能していないのは STDIN だけです。コマンドを送信するためのツールがあります。このツールは、ポートを介して STDIN として coomands を inetd サーバーに送信します。同じメカニズムが、プラットフォーム、solaris、hp、linux、aix などのすべての UNIX で機能します。Windowsではありません...

私が理解できないことの 1 つは、なぜ STDIN が閉じられているのか、デバッグする方法があるのか​​ということです。前もって感謝します!

4

1 に答える 1

1

Cygwin & ClearCase VOB から Perl を呼び出す際のバグのようです。今後の参考のために: Cygwin で perl をコンパイルし、inetd スクリプトから呼び出しました。私が知る限り、物事はうまくいっています。

于 2014-04-29T13:02:24.017 に答える