2017-01-03 2 views
0

나는 fl1_start와 f1.1_len의 값으로 fcntl을 사용하여 파일의 특정 바이트를 잠근다. 프로그램을 실행하는 동안, 나는 그 바이트에 다른 프로그램에서 그 파일에 쓰려고했습니다. 두 프로그램이 동시에 실행될 때 두 번째 프로그램은 첫 번째 프로그램에서 잠금이 있음에도 불구하고 잠긴 바이트에 쓰고 있습니다. 아무도 왜 그런 행동을 설명 할 수 있습니까?fcntl 바이트 파일 잠금 리눅스에서

답변

3

fcntl은 Unix 계열 시스템에서 자발적으로 구현됩니다. 두 프로세스 모두 제대로 작동하려면이를 사용해야합니다.

read()write()과 같은 작업은 단순히 잠금을 무시합니다. 다른 프로세스에 의해 이미 잠겨있는 영역에 명시 적으로 fcntl()을 호출 할 때만 다른 프로세스가 차단됩니다.

+0

답변 해 주셔서 감사합니다 – Nazeem