1
Windows에서 Cygwin을 통해 inetd를 구성하고 서비스로 시작했습니다.Windows에서 inetd를 통해 STDIN을 읽는 중 오류 "잘못된 파일 설명자"오류
스크립트 : 명령 행에서
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)
나는 전체 구글 검색되었지만 찾을 수 없습니다 해결책. 누군가가 그것에 불을 붙일 수 있습니까?
감사!
업데이트 : 감사는 응답을 위해, 내가 IO :: 소켓이 TELENT 서버를하지 않는다는 것을 알고 있지만, Cygwin에서 inetd에를 설정하여, 그것은 하나가된다. 포트로 Telnet inetd.conf의 Works와 스크립트가 호출됩니다. 또한 STDOUT가 작동합니다. 작동하지 않는 것은 STDIN뿐입니다. 나는 사람들이 명령을 제출할 수있는 도구를 가지고 있으며,이 도구는 포트를 통해 STDIN으로 inetd 서버에 coomands를 보냅니다. 동일한 메커니즘이 플랫폼, solaris, hp, linux, aix와 같은 모든 유닉스에서 작동합니다. 창문에 없으면 ...
STDIN이 닫힌 이유는 무엇입니까? 디버깅 할 방법이 있습니까? 미리 감사드립니다!
** 실제로 쓰려고하는 것은 무엇입니까? ** (또한 readline 연산자는 스트림의 끝 부분에 도달하면'undef'를 반환 할 수 있습니다.) STDIN이 닫히면 이것은 STDIN 종류를 닫는 것은 서비스/데몬에 의미가 있으며'IO :: Socket'을 사용하는 것만으로도 마술처럼 스크립트를 텔넷 서버로 만들지는 않습니다). – amon
@amon, 아니요,하지만 inetd는 않습니다. – ikegami