0

如果一个进程给一个文件一个写锁,然后它产生一个子进程,锁是由子进程继承的吗?如果是,那么有2个进程有写锁,我了解到只有1个进程可以有写锁,有些道理?这是一个测试python代码

#!/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 的锁,但失败了 ,所以我猜孩子有锁

4

1 回答 1

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.

我希望这些信息有所帮助。

于 2014-09-01T17:21:10.387 回答