mq_unlink 예제

IRIX에는 UNIX SystemV 릴리스 4(SVR4)와 호환되는 메시지 큐의 구현이 포함되어 있습니다. 이러한 메시지 큐 함수는 이 섹션의 예제 프로그램에서 설명합니다. 키를 지정하는 대신 메시지 큐 ID; 예를 들어 ,-i 80. 생성된 큐는 제거될 때까지 지속되는 영구 개체입니다. 프로그램이 큐를 만들고 사용한 다음 종료 하는 동안 제거 하려는 경우 mq_unlink()를 호출하여 큐를 제거할 수 있습니다. 메시지 큐를 다시 만들기 위한 mq_open()에 대한 호출은 메시지 큐가 실제로 제거될 때까지 실패할 수 있습니다. 그러나 mq_unlink() 호출은 모든 참조가 닫혀있을 때까지 차단할 필요가 없습니다. 즉시 반환할 수 있습니다. 네 가지 예제 프로그램은 일관된 디자인을 가지며 일관된 명령줄 인수를 사용합니다. 각 인수는 대부분의 오류 반환 코드를 포함하여 각 함수의 대부분의 기능을 연습할 수 있는 선택적 인수를 허용합니다.

다음은 간단한 사용 예입니다. 먼저 큐가 만들어집니다: 이 예제에서는 상수 PROJ_KEY를 사용하여 키를 공급합니다. 또 다른 옵션은 ftok() 라이브러리 함수를 사용하는 것입니다(ftok(3C) 참조 페이지 참조). 아래 예제에서는 Linux에서 POSIX 메시지 큐를 사용하여 서버와 클라이언트 간의 프로세스 간 통신을 보여 줍니다. 서버는 항공편의 좌석 번호또는 이와 유사한 토큰 번호를 관리합니다. 요청 시 클라이언트에 토큰 번호를 제공하는 것은 서버의 작업입니다. 일반적인 시나리오에서는 서버에 토큰 번호를 요청하는 클라이언트가 여러 개 있을 수 있습니다. 서버의 메시지 큐 이름은 클라이언트에 알려져 있습니다. 각 클라이언트에는 서버가 응답을 게시하는 자체 메시지 큐가 있습니다. 클라이언트가 요청을 보내면 해당 메시지 큐 이름을 보냅니다. 서버는 클라이언트의 메시지 큐를 열고 응답을 보냅니다. 클라이언트는 메시지 큐에서 응답을 선택하고 해당 클라이언트의 토큰 번호를 읽습니다.

프로세스 아키텍처는 다음과 같습니다. 메시지 큐의 최대 크기(예: -b 0x1000)입니다. gcc queue_example_threads.c-o queue_example_threads -lrt-lpthread를 컴파일하여 위의 것을 컴파일합니다. 메시지는 mq_send(3) 및 mq_receive(3)를 사용하여 큐에서 전송됩니다. 프로세스가 큐를 사용하여 완료되면 mq_close(3)를 사용하여 종료하고 큐가 더 이상 필요하지 않은 경우 mq_unlink(3)를 사용하여 큐를 삭제할 수 있습니다. 큐 속성을 검색하고 mq_getattr(3) 및 mq_setattr(3)을 사용하여 수정할 수 있습니다. 프로세스는 mq_notify(3)를 사용하여 이전에 빈 큐에 메시지 도착에 대한 비동기 알림을 요청할 수 있습니다.

Posted in Uncategorized.