2012-02-25 8 views
1

"共有"プロセスに対して複数のネットワーク接続を行うことができるように、プロセス(たとえばBash)をラップするツールはありますか?各接続は、プロセスに入力(例えば、環境変数の設定、外部コマンドの実行)を送信し、プロセスからの対応する出力を得ることができる。複数の接続を許可するプロセスをラップするツール

これまでのように、socatを使用している私が見つけた最も近いツール:

server% socat exec:bash tcp-listen:1234,reuseaddr,fork 

client1% socat - tcp:localhost:1234 
client1% pwd 
client1% x=123 

client2% socat - tcp:localhost:1234 
client2% echo $x # print 123 (but on client1!) 

しかし、問題は、複数のアクティブな接続がある場合には、(サーバからの)出力がクライアントに行かないかもしれないということです対応する入力を送信した。

回避策はありますか?それとも別のツールがありますか?可能であれば、ツールは入力を「シリアライズ」する必要があるため、競合状態は発生しません。

私は、複数のライブラリを使用するスクリプトをラップして、毎回起動するのではなく(かなり時間がかかります)、実行中のスクリプトプロセスに接続し、実行するコマンドを送信するだけです。

+0

http://home.vr-web.de/Juergen.Kahrs/gawk/gawkinetでのgawkのネットワーキングおよびコプロセス機能に関する優れたチュートリアルがあります.html#トップ、あなた自身を圧倒する場所。 perlでも同じことができました。この記事は、役に立つかもしれない他のツール(ソートではない)を参照しています。がんばろう。 – shellter

答えて

0

私は同様の問題があり、左右のアドレスを切り替えた後に消えてしまいました。

だから、あなたはあなたのケースでみてください:

socat tcp-listen:1234,reuseaddr,fork exec:bash 
+0

しかし、接続毎に**別々の 'bash'シェルを取得します:ある接続で' x = 123'を設定し、別の接続で 'echo $ x'に影響しません。私が欲しいのは、すべての接続に**共有された**シェルです。 – aggu

+0

正解、質問を間違えた、申し訳ありません。 – FloHimself

関連する問題