2009-08-03 2 views
0

명명 된 파이프를 사용하여 다른 프로세스와 통신하는 작은 Linux 프로그램에 핸드 셰이크 형식 프로토콜을 구현해야합니다. 나는 명명 된 파이프를 사용할 때 핸드 셰이크 타입 프로토콜을위한 일반적인 구현 패턴을 찾았지만 아무 것도 켜지 못했습니다 ..."핸드 셰이크"는 일반적으로 명명 된 파이프와 관련하여 구현되는 방법

나는 할 수있는 패턴이 없다고 단순히 믿을 수 없습니다. 이. 누군가가 가능한 자원에 나를 가리킬 수 있습니까?

이것은 숙제를위한 것이지만이 패턴을 구현하는 것은 숙제가 아닙니다. 우리는 숙제 코드 내의 문제를 해결할 필요가 있으며 이것이 가능한 해결책이라고 생각합니다. 숙제는 C++로 구현됩니다. 그러나 언어는 저에게 중요하지 않습니다. 난 그냥 바퀴 ....

업데이트를 재발견하고 싶지 않은 :이 신호로 구현 될 수 있다는 느낌이 듭니다.

은에 자식 프로세스 보고서는 작업 에 대한 준비가되어 있지만, 부모가 이동 신호를 제공 할 때까지 (파이프에 뭔가가있는 경우에도)를 진행하지 않는 부모 프로세스의 내가 악수를 의미하는 것이된다 . 제 작업 이론에서, 을 준비해야한다고 말하는 많은 하위 프로세스가 있습니다. 부모로부터의 go 신호에 대해서는입니다.

+1

"유닉스 환경에서의 고급 프로그래밍"이라는 책은 주변의 이슈를 깊이있게 다루는 놀라운 책입니다. 그것은 무게가은으로 가치가 있습니다 (금이 아닌 경우). – gahooa

+0

참고로이 주제에 대해 아무 것도 찾을 수 없었던 이유를 이제 알게되었습니다. *이 기술에 대한 매우 드문 사용법입니다. * –

답변

2

의 경우 일반적으로 사용 프로세스는 핸드 셰이크 차단에 의존합니다. 작성기 프로세스는 작성을 위해 파이프를 열고 판독기 프로세스는 읽기 용 파이프를 열고 다른 프로세스가 그 쪽을 열 때까지 첫 번째 블록이 발생합니다. 이것은 판독기 측에서 논 블로킹 IO를 사용하도록 확장 될 수 있습니다.

명명 된 파이프는 일대일 IPC에 가장 유용합니다. 일대 다 상황에서는 UNIX 도메인 소켓을 대신 사용해야합니다.

+0

이 숙제는 명명 된 파이프와 관련이 있습니다 .... 그래서 주어진 아키텍처가 붙어 있습니다 .... –

+0

글쎄, 당신은 정말로 하나의 파이프가 필요합니다. 자식 프로세스 (양방향 통신을 원한다면 2 개). 주어진 경우, 부모 프로세스가 한 번에 하나씩 모든 파이프를 열어 놓고 일단 모든 open() 호출이 리턴되면 모든 하위 프로세스가 실행 중이며 작업을 기다리는 것을 알 수 있습니다. – caf

+0

당신이 옳다고 생각합니다 .... 답장을 보내 주셔서 감사합니다. –

관련 문제