#include <stdio.h>
#include <stdlib.h>
#include <sys/file.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd;
int lock_result;
// 打开文件
fd = open("example.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
// 尝试获取排他锁
lock_result = flock(fd, LOCK_EX);
if (lock_result == -1) {
perror("flock");
close(fd);
exit(EXIT_FAILURE);
}
printf("成功获取排他锁\n");
// 在这里进行文件操作
// 释放锁
lock_result = flock(fd, LOCK_UN);
if (lock_result == -1) {
perror("flock");
close(fd);
exit(EXIT_FAILURE);
}
printf("成功释放锁\n");
// 关闭文件
close(fd);
return 0;
}
open
函数以读写模式打开文件 example.txt
,如果文件不存在则创建它。flock
函数尝试获取一个排他锁(LOCK_EX
)。如果获取成功,则可以独占访问文件;否则,程序会等待直到锁可用。flock
函数释放锁(LOCK_UN
),以便其他进程可以访问文件。这个示例展示了如何使用 flock
来确保多个进程不会同时对同一个文件进行写入操作,从而避免数据竞争问题。
上一篇:linux怎么查看ip地址
下一篇:linux 查看进程启动时间
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站