0

ソケットから入力を読み取り、応答を書き戻す小さなハードウェア エミュレーターを作成しようとしています。ネットワーク部分には ncat を、ロジックには Perl を使用したいと考えています。しかし、ncat を使用して perl スクリプトを実行すると、応答が送信されません。

まず、これは私が ncat をどのように使用したいかを示しています。簡単なので、デモンストレーション目的で /bin/cat を使用しています。

サーバーを起動するncat -l 1234 -keep-open --exec "/bin/cat"

クライアントを起動するncat 12.34.56.789 1234

そうすることで、ncat は期待どおりにコマンドをエコー バックします。しかし、perl で cat を記述して /bin/cat の代わりに使用しようとすると、.

#!/usr/bin/perl
while (<>) {
    print $_;
}

ncat -l 1234 -keep-open --exec "/path/cat.pl"

ncat がクライアントに応答を返すことはありません。コマンドラインからでも、/bin/cat とまったく同じことを行います。また、/bin/cat の代わりに ncat を指定して次の bash スクリプトを使用すると、/bin/cat のように動作します。ncat は、期待どおりに応答をクライアントに返します。

#!/bin/bash
while [ true ]
do 
read lin
echo "$lin"
done

Perl スクリプトを希望どおりに動作させるにはどうすればよいですか?

4

1 に答える 1