pwrite는 데이터 덮어쓰기를 어떻게 방지합니까?

pwrite는 데이터 덮어쓰기를 어떻게 방지합니까?

두 개의 프로세스 A와 B가 있다고 가정합니다. 그들은 모두 동일한 파일에 추가하기를 원합니다. 둘 다 파일을 여는 데 함수를 사용 open(사용하지 않음)하고 O_APPEND, 둘 다 pwrite(fd, buf, bytes, offset)파일을 쓰는 데 사용됩니다.

pwrite파일 끝에서 오프셋 위치를 구문 분석해야 하므로 이 경우 데이터를 덮어쓰지 않는다는 것을 어떻게 보장할 수 있습니까 ?

답변1

이를 보장하지는 않습니다. 정말로 이야기의 끝입니다.

답변2

@Marcus Müller는 다음과 같이 썼습니다.

이를 보장하지는 않습니다. 정말로 이야기의 끝입니다.

pwrite기능 자체는 귀하가 설명하는 시나리오에서 데이터 덮어쓰기에 대한 보호를 보장하지 않습니다.

데이터 덮어쓰기를 방지하려면 프로세스가 동시에 동일한 오프셋에 쓰지 않도록 파일 잠금, 프로세스 간 통신 또는 공유 데이터 구조를 통한 조정과 같은 다른 메커니즘을 구현해야 합니다.

관련 정보