2014-09-01 1 views
0

프로세스가 파일에 쓰기 잠금을 부여한 다음 자식 프로세스를 생성하면 자식 프로세스가 상속 잠금을 적용합니까? 그렇다면, 거기에 2 프로세스가 쓰기 잠금을 가지고, 나는 단지 프로세스가 쓰기 잠금, 일부 진실을 가질 수 있다는 것을 알게 되었습니까? 여기에 테스트 파이썬 코드파일 쓰기 잠금 및 자식 프로세스

#!/usr/bin/python 

import fcntl 
import time 
import os 

fp = open('test.ini','w') 
fcntl.flock(fp, fcntl.LOCK_EX | fcntl.LOCK_NB) 
pid = os.fork() 

if pid > 0: 
    time.sleep(10) 
    exit(0) 
if pid == 0: 
    time.sleep(100) 
    exit(0) 

는 부모가 존재하는 경우, 내가 파일 test.ini의 잠금을 얻기 위해 노력했지만 실패, 그래서 아이가

답변

0

파일 잠금은 잠금을 가지고 추측입니다 열린 파일 설명 자와 연관됩니다. 즉, 시스템 호출과 같이 dup()을 사용하여 디스크립터를 복제 할 때 (또는 자식 프로세스가 부모로부터 파일 디스크립터를 상속받을 때) 잠금도 상속된다. 예 :

flock(fd, LOCK_EX);//get a lock 


newfd = dup(oldfd);//duplicating the file descriptors 


flock(newfd, LOCK_UN);//THis call will release the lock using the duplicated file descriptor. 

이 정보가 도움이되기를 바랍니다.