이 함수는 기존 액세스 가능한 파일과 프로젝트 식별자의 경로 이름을 shmop_open() 및 기타 System V IPC 키와 함께 사용할 정수로 변환합니다. ftok() 함수는 동일한 ID 값으로 호출될 때 동일한 파일의 이름을 지정하는 모든 경로에 대해 동일한 키 값을 반환하고, id 값으로 호출되거나 동일한 파일 시스템에 존재하는 다른 파일의 이름을 지정하는 경로로 다른 키 값을 반환합니다. e 같은 시간. path에 의해 명명된 파일이 제거되고 동일한 이름으로 다시 생성된 후 ftok()가 다시 호출될 때 동일한 키 값을 반환할지 여부는 지정되지 않습니다. 다음 예제에서는 IPC 함수 semget(), msgget(및 shmget()에서 사용할 수 있는 고유한 키를 가져옵니다. 이 예제에서 ftok()에서 반환되는 키는 ID 값 S와 경로 이름 /tmp를 기반으로 합니다. 키 값을 응용 프로그램에 하드코딩하여 키를 매번 동일한 값일 수 있습니다. 이것은 키가 이미 사용 중일 수 있다는 단점이 있습니다. ftok() 함수는 클라이언트와 서버 모두에 대한 키 값을 생성하는 데 사용되는 경우가 많습니다. ftok() 함수는 경로 및 ID를 기반으로 키를 반환합니다.
함수는 동일한 ID 값으로 호출될 때 동일한 파일을 가리키는 모든 경로에 대해 동일한 키를 반환합니다. ftok()가 동일한 파일 시스템의 다른 파일에 대해 다른 ID 값이나 경로 포인트로 호출되면 다른 키를 반환합니다. 물론 결과 key_t가 고유하다는 보장은 없습니다. 일반적으로 최상의 시도에서는 지정된 proj_id 바이트, inode 번호의 하위 16비트 및 장치 번호의 하위 8비트를 32비트 결과로 결합합니다. 충돌이 쉽게 발생할 수 있습니다,예를 들어 /dev /hda1에 파일과 /dev/sda1에 파일 사이. 다음 예제는 pathname /tmp 및 ID 값 a를 기반으로 하는 고유 키를 가져옵니다. 또한 semget(), msgget(또는 shmget()에 대한 이후 호출에 사용할 수 있도록 결과 키값을 semkey 변수에 할당합니다. ID의 낮은 순서 8 비트만 중요 합니다. ftok()의 동작은 이러한 비트가 0인 경우 지정되지 않습니다. ftok — 경로 이름과 프로젝트 식별자를 System V IPC 키로 변환하는 ftok() 함수는 msgget(), semget() 및 shmget()에 대한 후속 호출에서 사용할 수 있는 경로 및 ID를 기반으로 키를 반환합니다.
Published by: gianni57
Comments are closed.