`$ipcs`를 실행할 때 모든 공유 메모리 세그먼트 키가 "0x00000000"인 이유는 무엇입니까?

`$ipcs`를 실행할 때 모든 공유 메모리 세그먼트 키가 "0x00000000"인 이유는 무엇입니까?

$ ipcs따라서 이 섹션을 실행하면 shared memory segment다양한 결과가 반환됩니다.

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 524288     jvn        600        524288     2          dest         
0x00000000 1048577    jvn        600        524288     2          dest         
0x00000000 1769474    jvn        600        393216     2          dest         
0x00000000 753667     jvn        600        524288     2          dest         
0x00000000 1146884    jvn        600        16777216   2         

0x00000000값은 모든 IPC 객체에 존재하는데 왜 다르지 않습니까? 무슨 뜻이에요?

더 많은 배경 정보를 제공하기 위해,TLDP상태:

고유 ID를 얻으려면 키를 사용해야 합니다. 키는 클라이언트와 서버 프로세스 모두에서 동의해야 합니다. 이는 애플리케이션을 위한 클라이언트/서버 프레임워크를 구축하는 첫 번째 단계를 나타냅니다.

전화로 누군가에게 전화를 걸 때는 그 사람의 번호를 알아야 합니다. 또한 전화 회사는 발신 전화를 최종 목적지로 전달하는 방법을 알아야 합니다. 상대방이 전화를 받아 응답하면 연결이 설정됩니다.

System V IPC 시설의 경우 telephone'' correllates directly with the type of object being used. The전화 회사 또는 라우팅 방법이 IPC 키와 직접 연결될 수 있습니다.

키 값을 애플리케이션에 하드코딩하면 키가 매번 같은 값이 될 수 있습니다. 단점은 키가 이미 사용 중일 수 있다는 것입니다. 일반적으로 ftok() 함수는 클라이언트와 서버에 대한 키 값을 생성하는 데 사용됩니다.

답변1

대답은 Linux Foundation Certified System Administrators의 온라인 강좌 콘텐츠를 통해 찾았습니다.

현재 실행 중인 거의 모든 공유 메모리 세그먼트에는 키(IPC_PRIVATE라고도 함)가 있습니다. 0이는 0x00000000상위/하위 관계가 있는 프로세스 간에만 공유된다는 의미입니다.

관련 정보