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 が閉じられているのか、デバッグする方法があるのかということです。前もって感謝します!