log file open시 O_APPEND를 사용한경우 file locking을 안해도 될까요?

superkkt의 이미지

클라이언트가 접속할때마다 fork해서 서비스하는 구조입니다. child process는 같은 log file을 사용하구요.. log file을 오픈할때 O_APPEND 플래그를 사용했습니다.

이 경우에는 file locking을 사용하지 않아도 각 프로세스가 파일의 끝에 정확히 write를 하게되나요? 로그가 섞일만한 테스트 환경을 구성하는걸 못해서 테스트를 못해보고 있네요.. :puzzled:

cinsk의 이미지

O_APPEND를 썼다면 대부분의 경우에 두 프로세서가 동시에 파일에 쓸 경우에도 서로 섞이지 않고 파일에 씁니다. 다만... 파일이 NFS에 있을 경우, 서로 섞이게 될 가능성이 있다고 합니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/