FTOK(3)

이름
ftok - 경로와 프로젝트 식별자를 시스템 V IPC 키 값으로 변환한다.

사용법
# include <sys/types.h>
# include <sys/ipc.h>

key_t ftok ( char *pathname, char proj )

설명
이 함수는 접근 가능하고 실제로 존재하는 파일의 경로와 프로젝트 식별자를 key_t 타입의 시스템 V IPC 키 값으로 변환한다.

반환 값
성공적인 경우에는 정상적으로 변환된 key_t 값을, 그렇지 않으면 -1 을 반환하고 stat(2) 시스템 콜에 관한 에러를 표시하기 위해 errno 값을 설정한다.

버그
변환 한 key_t 값은 pathname의 i-node 번호와 디스크 파일이 위치한 파일 시스템의 부(minor) 장치 번호를 얻기 위해 pathname에 부합하는 디스크 파일의 상태를 저장하고 있다. 따라서 이 값은 i-node 번호의 하위 16비트와, 부 장치 번호의 8비트 그리고 proj 값의 8비트를 조합해서 만든다. 그러므로 이 알고리즘은 유일한 키 값을 보장할 수 없다. 실제로

•   같은 파일에 링크된 서로 다른 이름의 파일은 같은 키 값을 생성한다.

•   드문 경우이지만, i-node 번호의 하위 16비트를 사용하기 때문에, 서로 다른 i-node를 가지는 파일이 서로 같은 키 값을 가지는 경우가 있다.

•   드문 경우이지만, 주(major) 장치 번호를 분간할 수 없기 때문에, 여러 개의 디스크 제어 장치를 가지는 시스템에서도 역시 이런 충돌이 일어날 수 있다.

관련 항목
ipc(5), msgget(2), semget(2), shmget(2), stat(2).

역자
정동현 <dhjung@serome.co.kr>, 2000년 4월 21일