2013-02-20 5 views
1

문제가 있습니다.IPC msgrcv - 두 가지 유형의 메시지 만 수신

저는 프로세스가 있습니다. 클라이언트이고 서버라고하는 프로세스라고합시다. 클라이언트와 서버는 같은 큐로 서로 통신합니다. 클라이언트가 서버 (요청)에 메시지를 보내면 서버가이를 처리하고 확인 또는 실패 메시지를 클라이언트에 다시 보내야한다고 가정 해 봅시다. 확인 결과가 long type = 1500101이고 실패한 경우 long type = 1500102이라고 가정 해 봅시다.

C에서 msgrcv를 사용하여 두 가지 유형의 메시지 (클라이언트) 만 대기 할 수 있습니까? 그렇지 않은 경우 이러한 메커니즘을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

아니요, 여러 개의 메시지 유형으로 수신 할 수 없습니다. 전부 또는 단일 유형이거나 단일 유형을 제외한 모든 유형입니다.

당신이 수 있습니까합니까 IPC_NOWAIT 플래그와 함께 msgrcv 전화 번호는 각 유형에 대해 두 번입니다.

0

클라이언트와 서버가 동일한 큐로 서로 통신합니다.

나는 클라이언트와 서버가 개별적인 큐를 가지고 있다고 제안한다. 그런 다음 서버는 큐에 들어오는 모든 메시지를받을 수 있습니다 (msgtype을 0으로 사용). 그것은받은 메시지의 msgtype을 토대로 전환하고 필요한 조치를 취할 수 있습니다.