文件读取加锁:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/file.h>
#define LOCK_FILE "/root/priv/cjson/test.lock"
#define DATA_FILE "json.txt"
int main() {
int fd_lock, fd_data;
struct flock lock;
// 创建文件锁
fd_lock = open(LOCK_FILE, O_WRONLY | O_CREAT, 0644);
if (fd_lock == -1) {
perror("open lock file");
exit(EXIT_FAILURE);
}
// 设置独占锁
lock.l_type = F_WRLCK;
lock.l_start = 0;
lock.l_whence = SEEK_SET;
lock.l_len = 0; // 锁定整个文件
if (fcntl(fd_lock, F_SETLKW, &lock) == -1) {
perror("fcntl lock");
close(fd