2010-01-15 2 views
3

마스터 프로세스와 일련의 슬레이브 프로세스 사이에서 Linux 파이프 (os.pipe())와 fifos (os.mkfifo()) 간의 통신을 제어하기 위해 twisted를 사용하려고합니다. . 필자는 이러한 유형의 파일 디스크립터에 twisted를 사용하는 것이 가능하지만 (결국 NFS 디스크가 파일 디스크립터로 추상화되는 TCP 소켓에 트위스트가 적용됨),이 유형의 사용 예는 찾을 수 없습니다. 누구나 링크, 샘플 코드 또는 조언이 있습니까?파일 설명자와 함께 비틀어 진 파이썬을 사용하는 예제

답변

-3

비동기 입출력을 위해 내장 된 것이 없습니다. 누군가는 libaio wrapper을 썼지 만, 오랜 시간 동안 만져 본 적이 없으며, 여전히 작동하는지는 잘 모른다.

최악의 경우 select을 사용하여 읽을 수있는 것이 있는지 확인할 수 있지만 글쓰기에 도움이되지는 않습니다.

12

reactor.spawnProcess을 사용하면 부모 프로세스와 그것이 생성하는 하위 프로세스간에 임의 파일 설명자 매핑을 설정할 수 있습니다.

reactor.spawnProcess(protocol, executable, args, 
        childFDs={0: 'w', 1: 'r', 2: 'r', 3: 'r', 4: 'r'}) 
: 예를 들어, 프로그램을 실행하고 부모 프로세스에 다시 바이트를 보낼 수있는 (표준 입력, 표준 출력 및 표준 오류에 추가) 그것을 두 개의 추가 출력 디스크립터를 제공, 당신은 이런 식으로 뭔가를 할 것입니다

원자로가 파이프를 만드는 일을 처리하고, 데이터를 읽을 때 통과 할 ProcessProtocol에서 childDataReceived으로 전화합니다. 자세한 내용은 spawnProcess API docs을 참조하십시오.

아동용으로 Twisted를 사용하는 경우 대부분 twisted.internet.stdio을보고 싶습니다. core examples에서 stdiodemo.py와 stdin.py는 해당 모듈을 사용하는 방법을 보여줍니다.

+0

'twisted.internet.stdio'에 대한 마지막 사례는 내가 찾고있는 것과 정확히 일치합니다. http://twistedmatrix.com/documents/13.0.0/core/howto/process.html이 그것을 전혀 언급하지 않기 때문에 (아이를 어떻게하는지 ..) 어려움을 겪었습니다. 고마워! – oberstet

관련 문제