C语言 检查一个文件是否被锁定,而另一个程序使用它?

tquggr8v  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我在writer.c中有这样的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/file.h>
#include <fcntl.h>

int main() {
    FILE *fp = fopen("f.bin", "wb");
    int fd = fileno(fp);
    flock(fd, LOCK_EX);
    int i = system("./read");
    sleep(2);
    int a = 2;
    fwrite(&a, sizeof(int), 1, fp);
    sleep(2);
    flock(fd, LOCK_UN);
    fclose(fp);
};

字符串
应该如何写入reader.c文件以等待文件解锁?

zi8p0yeb

zi8p0yeb1#

感谢@John Bollinger,最简单的方法是在两个程序中使用相同的羊群结构。

void some_general_fread(char * file) {
    FILE * fp = fopen(file, "rb");
    int fd = fileno(fp);
    flock(fd, LOCK_EX);

    ///
    // some freads
    
    // Exit
    flock(fd, LOCK_UN);
    fclose(fp);
}

字符串
写作也一样。
这两个程序,开始时有延迟,并试图在文件修改期间读取,将等待,直到它完成修改。

相关问题