여러 인스턴스를 가질 수있는 앱의 메시지 quene에 대한 고유 키 생성

StackOverflow https://stackoverflow.com/questions/653119

  •  19-08-2019
  •  | 
  •  

문제

Message-Quene을 통해 프로세스간에 통신하는 Linux CUI 앱을 만들었습니다.

단일 인스턴스 인 한 문제는 없습니다. 그러나 동일한 앱의 여러 인스턴스가 있으면 Quene의 메시지가 잘못된 인스턴스로 전송됩니다.

Msgget 기능에 고유 한 키를 제공함으로써 이것이 피할 수 있다는 것을 이해합니다. ftok ()를 사용하여 키를 만들지 만 변수는 동일하므로 키가 동일합니다.

누군가가 각 인스턴스에 대해 고유 한 키를 갖는 방법을 안내 할 수 있습니까?

내가 지금 가지고있는 유일한 아이디어는 ftok에 주어진 변수를 랜덤 화하는 것이며, 나는 옳다는 것을 알고 있습니다.

도움이 되었습니까?

해결책

FTOK에주의하십시오!

이것은 주어진 파일 시스템에 대해서만 고유하며 파일 시스템이 많이 사용되지 않은 경우에만 해당됩니다. FTTOK는 파일 시스템의 파일 항목 번호에 따라 구동됩니다.

이것은 독특한 가치를 얻는 꽤 좋은 방법 이었지만 시간과 무어 법칙은 몇 년 전에 그것을 따라 잡았습니다. 파일 번호의 낮은 8 비트에서 작동하지만 실제 파일 번호는 이제 각 파일 시스템에 대해 32 비트 및 번호 매기기가 다시 시작됩니다.

프로세스 ID는 꽤 좋은 선택이며, 다시 사이클링되지만 프로세스가 여전히 살아있는 한는 아닙니다.

다른 팁

프로세스 ID를 사용해 볼 수 있습니다. 내 Google Foo가 있습니다 이것

일반적으로 Guid 또는 UUID라고 불리는 전 세계적으로 고유 한 ID를 찾고 있습니다. 라이브러리를 생성하는 데 사용할 수있는 라이브러리가 있어야합니다. 그들은 당신의 NIC 주소, 현재 시간 및 임의의 숫자로 만든 독특한 문자열입니다.

시계는 어때? 위키 백과 RDTSC (및 SMP 안전)보다 낫다고 말합니다.

"Linux에서는 값을 읽음으로써 유사한 기능이 제공됩니다. CLOCK_MONOTONIC posix clock_gettime 함수를 사용한 클럭. "

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top