Linux에서 내 프로젝트의 프로세스간에 데이터를 공유하기 위해 shmget을 사용하고 있습니다.shmget에서 키로 사용할 안전한 값
int shmget(key_t key, size_t size, int shmflg);
그러나, 다른 프로그램도 SHMGET을 호출 할 수 있습니다, 따라서 그것은 (키 충돌이 발생할 수 있습니다 내가하는 shmget를 호출 키로 상수를 사용하기 때문에, 내가 대신 생성 된 키 때문에의 상수를 사용해야합니다 횡 방향 프로세스가 구축되고 별도로 실행됩니다).
shmget에서 키로 사용할 안전한 값은 무엇입니까?
나는 무작위 키를 생성하는 것을 고려하고 있으며 수용 가능한 키가 발견 될 때까지 IPC_EXCL 플래그를 사용하여 shm 세그먼트를 반복한다. 그러나 이것이 좋은 옵션인지 모른다. – jondinham
@PaulDinh : 네, 그게 좋은 옵션입니다. 음,하지만 특정 'sizeof (key_t)'에 의존하지 않고 무작위 키를 생성 할 수있는 방법이 필요합니다. ftok()에 임의의 id를 사용하고 싶습니다. –
각 클라이언트가 서버와의 효율적인 IPC를위한 공유 메모리 세그먼트를 관리하는 클라이언트 - 서버 시나리오가있는 경우 고유 한'shmget() '키를위한 좋은 옵션 중 하나는'gettid()'시스템 호출 호출자의 스레드 ID를 반환합니다. 하지만 이것은 리눅스에 따라 다르다. –