建议锁与命令锁

强制锁与建议锁概念,这里就不描述了,可以查相关资料。
强制锁要生效经过必要三步:
1.允许文件系统强制锁生效。(默认不生效)
2.对于文件系统上需加锁文件,改变其组的权限(取消组中可执行权限,增加设置组id)。
3.对于文件系统上需加锁文件,进行加锁。

下面是测试程序:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>

int test_lock(int fd, short whence, off_t offset, off_t len)
{
        int ret;
        struct flock wlock;

        wlock.l_type = F_WRLCK;
        wlock.l_whence = whence;
        wlock.l_start = offset;
        wlock.l_len = len;

        ret = fcntl(fd, F_SETLK, &wlock);
        return ret;

}

int main(int argc, char *argv[])
{
    int fd;
    //Notice :permission and "zero"
    if((fd = open("./test", O_WRONLY|O_CREAT, 02640)) < 0) {
        return -1;

    }

    // Lock  the whole file

    test_lock(fd,SEEK_SET, 0, 0);
    pause();
    return 0;
}
测试过程:
1.编译test_w.c
gcc test_w.c -o test_w
2.重新挂载需要加锁的文件所在文件系统。
mount -o remount,mand /
3.运行程序
#./test_w &
[1] 6954
#echo "aaaa" >test
bash: test: 资源暂时不可用

可见强制锁生效。

4.杀死测试程序
#kill %1 -9
5.重新挂载需要加锁的文件所在文件系统。
mount -o remount /
6.运行程序
#./test_w &
[1] 6958
#echo "cccc" >test
#cat test
cccc
可见强制锁失效,这种情况可称之为建议锁


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值