2011-09-25 6 views
0

"/ dev/tty01"직렬 포트에 대한 독점 액세스 권한이있는 Unix에서 데몬을 만듭니다. 하나의 마스터 (데몬)와 여러 개의 슬레이브가있는 마스터 - 슬레이브 프로세스 패러다임을 만들 계획입니다. 슬레이브가 액세스 할 수있는 "공유 메모리"에 구조가 있다고 생각했지만 메모리에 단 하나의 작성자 만 있으므로 세마포가 필요하지 않을 가능성이 큽니다. 데이터는 매우 천천히, 예를 들어 매분 1 회 업데이트됩니다. 공유 메모리에 구조가있는 경우에도 구조를 연속적으로 메모리에 유지할 수있는 방법은 무엇입니까? 내가 반드시 지켜야 할 필수 조건입니다.공유 메모리 단일 직렬 포트에 액세스하기위한 마스터/슬레이브 프로세스

마스터 프로그램은 직렬 포트에서 업데이트되는 자체 내부 데이터 구조를 가지며 데이터를 수정하고 클라이언트가 사용할 수 있도록 공유 메모리에있는 전역 구조로 전송합니다.

유닉스 IPC에서 많은 경험이 없지만, 가장 쉬운 방법은 무엇입니까? 그런데 클라이언트는 모두 다른 프로세스가 로컬 시스템의 다른 사용자에 의해 실행됩니다.

프로젝트의 요구 사항 인 공유 메모리를 사용해야합니다. 또한 두 번째 구조의 데이터 형식이 다른 경우 한 구조를 다른 구조로 복사 할 수 있습니까?

답변

0
  1. 공유 메모리 세그먼트는 프로세스의 뷰에서 연속 된 메모리 조각입니다.

  2. 공유 메모리를 생성하고 처리하는 전화는 (설명 shmctl /는 shmat /시, shmdt)

  3. 메모리의 구조의 레이아웃은 당신에게 달려 오히려 간단합니다. 최상은 유형 필드와 같은 고정 헤더이고 나머지는 공용체입니다.

  4. 클라이언트 프로세스의 경우 공유 메모리와 구조를 숨기기 위해 데이터 검색을위한 기능 세트를 약간의 lib (정적 또는 공유)로 제공 할 수 있습니다.

관련 문제