두 개의 프로세스 A와 B가 있다고 가정합니다. 그들은 모두 동일한 파일에 추가하기를 원합니다. 둘 다 파일을 여는 데 함수를 사용 open
(사용하지 않음)하고 O_APPEND
, 둘 다 pwrite(fd, buf, bytes, offset)
파일을 쓰는 데 사용됩니다.
pwrite
파일 끝에서 오프셋 위치를 구문 분석해야 하므로 이 경우 데이터를 덮어쓰지 않는다는 것을 어떻게 보장할 수 있습니까 ?
답변1
이를 보장하지는 않습니다. 정말로 이야기의 끝입니다.
답변2
@Marcus Müller는 다음과 같이 썼습니다.
이를 보장하지는 않습니다. 정말로 이야기의 끝입니다.
이 pwrite
기능 자체는 귀하가 설명하는 시나리오에서 데이터 덮어쓰기에 대한 보호를 보장하지 않습니다.
데이터 덮어쓰기를 방지하려면 프로세스가 동시에 동일한 오프셋에 쓰지 않도록 파일 잠금, 프로세스 간 통신 또는 공유 데이터 구조를 통한 조정과 같은 다른 메커니즘을 구현해야 합니다.