如果进程为文件提供写锁定然后生成子进程,那么子进程是否继承了锁?如果是,那么有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的锁,但失败,所以我猜孩子有锁
答案 0 :(得分: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.
我希望这些信息有所帮助。