linux实现程序唯一性
在Linux下确保程序唯一运行的方法有很多,以下是一种常见的方法,使用文件锁(也称为互斥锁)。
你可以使用 fcntl
库中的 flock
函数来创建一个锁文件。如果程序已经运行,尝试创建同一个锁文件将失败,你可以通过检查这个失败来确定程序是否已在运行。
以下是一个简单的C++示例代码,展示了如何使用 flock
来确保程序的唯一运行:(网上找到的,未验证,有机会待验证)
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int lock_fd = open("/tmp/myapp.lock", O_CREAT | O_EXCL | O_RDWR, 0666);
if (lock_fd == -1) {
perror("open");
printf("Another instance of the application is running.\n");
exit(EXIT_FAILURE);
}
// 加锁,防止其他进程获取锁
if (flock(lock_fd, LOCK_EX | LOCK_NB) == -1) {
perror("flock");
close(lock_fd);
exit(EXIT_FAILURE);
}
// 程序主逻辑
printf("This is the only running instance of the application.\n");
// 程序结束前解锁
if (flock(lock_fd, LOCK_UN) == -1) {
perror("flock");
close(lock_fd);
exit(EXIT_FAILURE);
}
close(lock_fd);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具