linux下/var/run目录下的pid文件作用
来源:互联网 发布:matlab 关联矩阵 编辑:程序博客网 时间:2024/05/23 01:19
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件。而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?
(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。
用cat命令可以看到。
(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。
(3) 编程技巧:
调用fcntl设置pid文件的锁定F_SETLK状态,其中锁定的标志位F_WRLCK。
如果成功锁定,则写入进程当前PID,进程继续往下执行。
如果锁定不成功,说明已经有同样的进程在运行了,当前进程结束退出。
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
if (fcntl(fd, F_SETLK, &lock) < 0){
//锁定不成功, 退出......
}
sprintf (buf, "%d\n", (int) pid);
pidsize = strlen(buf);
if ((tmp = write (fd, buf, pidsize)) != (int)pidsize){
//写入不成功, 退出......
}
(4) 一些注意事项:
i) 如果进程退出,则该进程加的锁自动失效。
ii) 如果进程关闭了该文件描述符fd, 则加的锁失效。(整个进程运行期间不能关闭此文件描述符)
iii) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行。
(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。
用cat命令可以看到。
(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。
(3) 编程技巧:
调用fcntl设置pid文件的锁定F_SETLK状态,其中锁定的标志位F_WRLCK。
如果成功锁定,则写入进程当前PID,进程继续往下执行。
如果锁定不成功,说明已经有同样的进程在运行了,当前进程结束退出。
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
if (fcntl(fd, F_SETLK, &lock) < 0){
//锁定不成功, 退出......
}
sprintf (buf, "%d\n", (int) pid);
pidsize = strlen(buf);
if ((tmp = write (fd, buf, pidsize)) != (int)pidsize){
//写入不成功, 退出......
}
(4) 一些注意事项:
i) 如果进程退出,则该进程加的锁自动失效。
ii) 如果进程关闭了该文件描述符fd, 则加的锁失效。(整个进程运行期间不能关闭此文件描述符)
iii) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行。
0 0
- linux下/var/run目录下的pid文件作用
- inux下/var/run目录下的pid文件作用
- Linux下程序单例模式的保证机制:/var/run/*.pid
- Linux下程序单例模式的保证机制:/var/run/*.pid
- Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”
- linux 下安装 MySQL 经常出现各种问题终极解决方法 /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.pid
- 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/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- Linux/Unix下pid文件作用浅析
- linux/unix下 pid文件作用浅析
- 二进制输出整数
- Struts2加载外部jar包
- java WEB开发:过滤器、监听器、拦截器的区别
- Ubuntu Cocos2dx 学习笔记——错误总结
- Spring中数据库连接池的三种配置(dbcp,c3p0,proxool)(转载)
- linux下/var/run目录下的pid文件作用
- java NIO —— 缓冲区
- Introduction to Oracle VM server for SPARC
- 各大公司笔试面试题之数据结构与算法
- CRON表达式详解与案例
- KanKan甄选,BaseAdapter我要对你说,ViewHolder你懂得,性能优化必读
- Unity手稿
- 理解 Node.js 里的 process.nextTick()
- 杭州武林广场塔吊倒塌 致一人死亡