linux pid文件
来源:互联网 发布:哪家运营商4g网络最好 编辑:程序博客网 时间:2024/06/11 20:20
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件
作用
防止进程启动多个副本
有写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中
fcntl
int fcntl(int fd, int cmd, ... /* arg */ );int fcntl(int fd, int cmd, struct flock *lock);
F_GETLK 取得文件锁定的状态
F_SETLK 设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK
F_SETLKW F_SETLK 作用相同,但是无法建立锁定时,此调用会一直等到锁定动作成功为止
struct flock { ... short l_type; /* Type of lock: F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* How to interpret l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Starting offset for lock */ off_t l_len; /* Number of bytes to lock */ pid_t l_pid; /* PID of process blocking our lock (F_GETLK only) */ ...};
l_type 有三种状态:
F_RDLCK 建立一个供读取用的锁定
F_WRLCK 建立一个供写入用的锁定
F_UNLCK 删除之前建立的锁定
l_whence 也有三种方式:
SEEK_SET 以文件开头为锁定的起始位置
SEEK_CUR 以目前文件读写位置为锁定的起始位置
SEEK_END 以文件结尾为锁定的起始位置
l_start 表示相对l_whence位置的偏移量,两者一起确定锁定区域的开始位置
l_len表示锁定区域的长度,若果为0表示从起点(由l_whence和 l_start决定的开始位置)开始直到最大可能偏移量为止
举例
int fd = open("aa", O_CREAT | O_RDWR, 0777);struct flock lock;lock.l_type = F_WRLCK;lock.l_whence = SEEK_SET;lock.l_start = 1;lock.l_len = 10; fcntl(fd, F_SETLKW, &lock);if(fork() == 0){ struct flock lock; lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 1; lock.l_len = 10; fcntl(fd, F_SETLKW, &lock);}puts("done.");pause();
0 0
- Linux 文件锁 & pid
- linux pid文件
- linux pid文件编程例子
- linux 、proc/pid/stat 文件分析
- Linux 使用pid文件结束nginx
- Linux proc/pid/stat文件详解 .
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux 使用pid文件结束nginx
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- 使用Putty无法远程登录,显示服务器拒绝连接
- android studio 查看源码时有些类显示 can not resolve 的问题
- 立象Argox条码打印机CP-2140M开发
- 然而沼跃鱼早就看穿了一切
- 自定义控件其实很简单1/6
- linux pid文件
- Android自定义布局通知栏
- 利用ENGINE替换OPENSSL中的加解密算法
- erl_string-字符串匹配的KMP算法
- C#常用操作类库一(验证类)
- 一些网络用语
- GitHub 优秀的 Android 开源项目
- Ubuntu Server 14.04安装Gnome桌面环境
- 排序算法——宏观总结