shmget 예제

shmget(): int shmget (key_t, size_tsize, intshmflg); 성공적으로 완료되면 shmget()은 공유 메모리 세그먼트에 대한 식별자를 반환합니다. 이 예제에서는 서버와 클라이언트가 별도의 프로세스입니다. 첫째, 공유 메모리를 통한 순진한 의사 소통 체계가 설정됩니다. 공유 메모리는 하나의 상태 변수 상태와 4개의 정수 배열로 구성됩니다. 변수 상태는 데이터 영역이 아직 데이터로 채워지지 않은 경우 NOT_READY 값을 가지며, 서버가 공유 메모리에 데이터를 입력한 경우 채워지고 클라이언트가 공유 메모리의 데이터를 가져온 경우 촬영합니다. 정의는 다음과 같습니다. 이 파일을 다운로드하려면 여기를 클릭하십시오 (shm-02.h). shmctl () : 공유 메모리에서 분리하면 파괴되지 않습니다. 그래서, shmctl()을 파괴하는 것이 사용된다. shmctl (int shmid, IPC_RMID, NULL); 생성 시 새 공유 메모리 식별자와 연결된 데이터 구조는 다음과 같이 초기화됩니다. 이 서버 프로그램 server.c의 사본을 다운로드하려면 여기를 클릭하십시오. 두 번째 인수인 shmaddr는 첨부 주소를 지정하는 것입니다. shmaddr이 NULL인 경우 시스템은 기본적으로 세그먼트를 연결할 적절한 주소를 선택합니다.

shmaddr이 NULL이 아니고 SHM_RND가 shmflg에 지정되어 있으면 첨부는 SHMLBA(하위 경계 주소)의 가장 가까운 배수의 주소와 같습니다. 그렇지 않으면 shmaddr공유 메모리 첨부 파일이 발생/시작되는 페이지 정렬 주소여야 합니다. 인수shmaddr은 분리할 공유 메모리 세그먼트의 주소입니다. 분리할 세그먼트는 shmat() 시스템 호출에서 반환되는 주소여야 합니다. 첫 번째 인수인 키는 공유 메모리 세그먼트를 인식합니다. 키는 임의의 값이거나 라이브러리 함수 ftok()에서 파생될 수 있는 값일 수 있습니다. 키는 IPC_PRIVATE, 즉 서버 및 클라이언트(상위 및 자식 관계) 즉 상호 관련 프로세스 통신으로 프로세스를 실행하는 것을 의미할 수도 있습니다. 클라이언트가 이 키와 함께 공유 메모리를 사용하려면 서버의 자식 프로세스여야 합니다.

또한 부모가 공유 메모리를 얻은 후 자식 프로세스를 만들어야 합니다. shmat(): 공유 메모리 세그먼트를 사용하려면 shmat()를 사용하여 자신을 연결해야 합니다. 보이드 *shmat (int shmid, 보이드 * shmaddr, int shmflg); shmid는 공유 메모리 ID입니다. shmaddr는 사용할 특정 주소를 지정하지만 0으로 설정해야하며 OS는 자동으로 주소를 선택합니다. shm_lpid, shm_nattch, shm_atime 및 shm_dtime의 값은 0으로 설정됩니다. 읽기 및 쓰기 프로세스 작업은 동시에 수행우리는 파이프와 명명 된 파이프의 IPC 기술을 본 지금은 나머지 IPC 기술 비주얼라이제이션을 알 수있는 시간이다., 공유 메모리, 메시지 큐, 세마포, 신호 및 메모리 매핑.

By | 2019-08-02T21:07:20+00:00 août 2nd, 2019|Non classé|Commentaires fermés sur shmget 예제

About the Author: