gpt4 book ai didi

C fcntl 抽象函数不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:02 25 4
gpt4 key购买 nike

我正在编写一个应用程序,它在我需要锁定的规范中每次我在上面写一个文件(这个文件将被其他应用程序读取其他团队正在研究):

我实现了以下功能:

int lock_file (int fd)
{
if (fd == -1)
return -1;
struct flock file_locker;
file_locker.l_type = F_WRLCK;
file_locker.l_whence = SEEK_SET;
file_locker.l_start = 0;
file_locker.l_len = 0; //lock the entire file

int locked = fcntl(fd, F_SETLK, &file_locker);
if (locked == -1){
/*handle errors*/
return 0;
}
return 1;
}

我可以获得 1 返回(意味着一切正常)但是当我制作测试用例时我可以在锁定的文件中写入 Oo

测试代码是:

char *file = "lock_test_ok";
int fd = open(file, O_RDWR);
int locked = lock_file(fd);
/* call popen and try write 'ERROR' in the file */

/* if the file contains ERROR, than fail */

最佳答案

Unix 中的锁定是建议性的:只有测试锁定的程序才不会写入。 (有些提供强制锁定,但不是那种方式。它通常涉及在锁定文件上设置特殊属性。)

关于C fcntl 抽象函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com