- 关 键 词:
- linux
通过文件锁来实现,在程序运行的一开始,检查某文件是否存在,如果存在则说明改程序已经在运行了,如果不存在则利用open语句创建该文件,程序退出时关闭并删除此文件。
| static char file_lock[sizeof(ctl_addr.sun_path)] = /var/run/file.pid; static bool file_lock_created = FALSE; static int create_lock(void) { int fd = open(file_lock, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, S_IRUSR | S_IRGRP | S_IROTH); if (fd < 0) { if (errno == EEXIST) { fprintf(stderr, "file: lock file \"%s\" already exists\n", file_lock); exit_file(10); } else { fprintf(stderr, "file: unable to create lock file \"%s\" (%d %s)\n" , file_lock, errno, strerror(errno)); exit_file(1); } } file_lock_created = TRUE; return fd; } static bool fill_lock(int lockfd) { char buf[30]; /* holds "\n" */ pid_t pid; int len; pid = getpid(); len = snprintf(buf, sizeof(buf), "%u\n", (unsigned int) pid); bool ok = len > 0 && write(lockfd, buf, len) == len; close(lockfd); return ok; } static void delete_lock(void) { if (file_lock_created) { //delete_ctl_socket(); unlink(file_lock); /* is noting failure useful? */ } } |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Linux集群技术 (8821篇文章)
- 体验Linux的音影世界 (8491篇文章)
- Linux驱动大全 (9307篇文章)
- Linux下的路由的配置与应用 (12330篇文章)
- Linux命令简介 (10396篇文章)
- Linux防火墙 (10183篇文章)
- Linux日志专题 (8947篇文章)
- Linux服务器的安全性能 (21156篇文章)
- 揭秘Linux内存管理 (8557篇文章)
- 解析Linux文件系统 (8764篇文章)
- VMware虚拟机Linux通过NAT方式上网 (145次浏览)
- Linux下安装VMware虚拟机的过程详解 (78次浏览)
- Linux服务器ADSL利用NAT实现上网共享 (56次浏览)
- Linux shell中使用ftp自动下载上传文件 (52次浏览)
- 在Linux系统下Mldonkey配置和使用方法 (49次浏览)
- 实例:Linux中如何查看服务及监听端口 (48次浏览)
- 多项更新!Ubuntu 8.04 Alpha6发布 (48次浏览)
- 系统管理:基于Linux的负载均衡技术介绍 (46次浏览)
- Linux是王道!NV专业卡多平台效能实测 (43次浏览)
- linux编译器 GCC 4.3.0已经发布 (40次浏览)



