공유 메모리를 사용하여 프로세스간에 벡터를 공유하고 있습니다.공유 메모리 유효 기간을 늘리십시오.
클라이언트에서 공유 메모리를 열어 벡터를 읽은 다음 메모리가 유효하지 않거나 내가 찾고있는 것이 아닌 경우 어떻게 알 수 있습니까?
메모리 세그먼트가 없으면 Open_Only
이 실패하고 그렇다면 어떻게 실패합니까?
또한 공유 메모리 세그먼트는 참조가없는 경우 제거되어야합니다. 그러나 제 경우에는 클라이언트와 서버가 모두 종료 되어도 공유 메모리에 액세스하는 것이 없지만 세그먼트는 프로그램 데이터의 Boost Interprocess 폴더에 일부 데이터와 함께 유지됩니다. 따라서 클라이언트가 다음에 시작할 때 세그먼트를 여는 데 아무런 문제가 없으므로 실제로 공유 할 데이터가 없을 때 올바른 데이터에 액세스하고 있다고 생각합니다.
친절히 조언하십시오. 고맙습니다.
크기에 대해 잘 모르겠습니다. 어떤 경우에는 크기를 0으로했지만 용량은 올바른 숫자로 지정했습니다. 그걸 수표로 사용하는 것은 확실하지 않습니다. Boost에는 세그먼트 구축기가 있지만, 모든 링크가 제거 된 경우에만 작동합니다. 따라서 서버가 아무 것도하지 않고 꺼버릴 때 클라이언트가 공유 메모리를 참조하는 것을 멈추고 오류를 알리는 이유는 무엇입니까? – user1173240
공유 메모리 수준에서는 서버에 클라이언트가 있다는 것을 알리는 메커니즘이 없습니다. 사실, 서버 대 클라이언트의 개념은 없습니다. 기본적으로 프로세스간에 공유되는 메모리 조각입니다. 다른 메커니즘이 그 위에 구축됩니다. shm 파일이 사용 중일 때/dev/shm 폴더를 표시합니까? – YasserAsmi
또 다른 아이디어는 공유 메모리에 항상 매번 숫자 (타임 스탬프?)를 증가시키는 일종의 것을 쓰는 것입니다. 고객이 가진 가치와 비교하십시오. – YasserAsmi