프로그램은 언제 파일 작성자인지 확인하려고 합니까?

프로그램은 언제 파일 작성자인지 확인하려고 합니까?

Linux 프로그래밍 인터페이스에서

만약에프로그램은 자신이 파일을 만든 사람인지 확인해야 합니다., open()을 호출할 때 O_EXCL 플래그를 사용해야 합니다.

"프로그램이 파일 작성자인지 확인해야 하는 경우"가 언제인지 알고 싶습니다.

이는 프로그램이 파일 소유자가 프로그램을 실행하는 프로세스의 유효한 ID일 것으로 예상하는 경우와 관련이 있습니까?

특정 파일에 대해 파일 소유자를 수정할 수 있으므로 파일 작성자를 어떻게 찾을 수 있습니까?

답변1

O_CREAT 플래그와 함께 사용되는 O_EXCL 플래그는 파일이 이미 존재하는 경우 호출이 open실패함을 의미합니다. 파일이 존재하지 않으면 파일을 생성하고 열려고 시도합니다.

그 용도 중 하나는 간단한 잠금 파일을 만드는 것입니다. 여러 프로세스가 O_CREAT 및 O_EXCL 플래그를 사용하여 동일한 파일을 열려고 하면 한 프로세스는 성공하고 나머지 프로세스는 실패합니다. 물론 파일이 이미 존재하는 경우, 예를 들어 이전 프로세스가 파일을 삭제하지 않고 종료되었기 때문에전혀후속 시도는 성공하므로 이는 잠금을 관리하는 가장 안정적인 방법이 아닙니다.

또 다른 용도는 프로세스에서 다른 프로세스가 쓸 수 없다고 확신하는 파일에 쓰기 위한 파일을 만드는 것입니다. /tmp다른 많은 프로세스가 유사한(아마도 동일한) 이름을 가진 파일을 생성하는 서버에서 파일을 생성하는 경우 이 옵션을 사용할 수 있습니다. mkstempglibc의 함수는 openO_CREAT 및 O_EXCL 플래그를 사용하여 호출됩니다.

Unix/Linux는 파일 작성자를 기록하지 않습니다(운영 체제에서 지원하는 경우 감사 로그가 발행될 수 있음).

관련 정보