2012-02-25 1 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

둔한의 네트워킹 및 coprocess 기능에 대한 훌륭한 입문서있다 http://home.vr-web.de/Juergen.Kahrs/gawk/gawkinet에서 .html # Top, 자신 만의 롤링 위치. perl에서도 마찬가지입니다. 이 기사는 도움이 될 수있는 다른 도구 (socat 아님)를 참조합니다. 행운을 빕니다. – shellter

답변

0

나는 비슷한 문제가있어서 왼쪽 및 오른쪽 주소를 전환 한 후에 사라졌습니다.

그래서 당신은 당신의 경우에 시도 할 수 있습니다 :

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

하지만 각 연결마다 별도의 ** bash 쉘을 얻을 수 있습니다 : 한 연결에서'x = 123'을 설정하면 다른 연결에서'echo $ x'에 영향을주지 않습니다. 내가 원하는 것은 모든 연결에 대해 ** 공유 ** 쉘입니다. – aggu

+0

맞습니다. 질문을 잘못 읽었습니다. 죄송합니다. – FloHimself