linux下/var/run目录下.pid文件的作用(文件锁,防止重复启动)
1.pid文件的内容
用cat命令查看,可以看到内容只有一行,记录了该进程的ID
2.pid文件的作用
防止启动多个进程副本
3.pid文件的原理
进程运行后会给.pid文件加一个文件锁,只有获得该锁的进程才有写入权限(F_WRLCK),把自身的pid写入该文件中。
其他试图获得该锁的进程会自动退出。
代码示例如下:
lock.l_type=F_WRLCK;
lock.l_whence=SEEK_SET;if(fcntl(fs,F_SETLK,&lock)<0)
{//锁定不成功,退出
}sprintf(buf,"%d\n",(int)pid);
pidsize=strlen(buf);
if(tmp=write(fs,buf,pidsize))!=(int)pidsize))
{//写入不成功,退出
}
4.注意事项
1)进程退出,该进程加的锁自动失效
2)进程关闭了该文件描述符,加的锁失效
3)锁的状态不会被子进程继承,进程关闭则锁失效,不管子进程是否在运行
linux下/var/run目录下.pid文件的作用(文件锁,防止重复启动)相关推荐
- linux u盘 uid pid,linux下的pid文件的作用
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件.而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件.那么这些pid文件有什么作用呢?它的内容 ...
- Nginx重启时丢失nginx.pid文件解决方法nginx: [emerg] open() “/var/run/nginx/nginx.pid“ failed (2: No such fi
nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory) 不要在 ...
- linux kill pid文件,从一次事故谈谈 pid 文件的作用
title: 从一次事故谈谈 pid 文件的作用 tags: pid categories: Tech comments: true date: 2017-05-26 20:00:00 很多程序在启动 ...
- 位于/var/log目录下的20个Linux日志文件
位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...
- 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件
如果你多数时间都在使用Linux系统,那么你有必要知道系统的日志文件位于哪里,以及每个日志文件是关于哪些内容的.在系统正常的时候学习理解各种日志文件的内容,有助于在遇到紧急情况时通过日志文件定位问题所 ...
- c++ linux下读取指定目录的所有文件名字
总结: linux下的两个关键函数 1. opendir() 打开一个目录 2. readdir() 从一个目录中读取一个新的文件 windows下 读取指定目录的所有 ...
- 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 参考文章: (1)解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 (2)http ...
- Windows 系统下通过命令将本地文件上传至远程 Linux 主机的指定目录下
这里是借助文件传输客户端 putty 的命令来上传文件. 第一步:下载安装 putty 第二步:通过命令终端进入 putty 的主目录下,即进入 D:\puggy 目录下,该目录下含有多个可执行文件( ...
- linux下循环读取目录文件,linux循环递归读取目录指定类型文件及计算阶乘脚本...
linux循环读取目录指定类型文件脚本 ergodic.sh #!/bin/bash function ergodic { for file in ` ls $1` do if [ -d $1&quo ...
最新文章
- 百度开源业内首个口罩人脸检测及分类模型,携手开发者共同抗疫
- Esxi服务器虚拟化平台搭建
- 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)
- hadoop--MapReduce_WordCount词频统计案例
- Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...
- Cocos2dx 之 PhysicsHandler 简单实现
- Matlab计算熵权法
- [Opencv]圆盘目标跟踪系统——激光打靶
- BZOJ P1189[HNOI2007]紧急疏散evacuate
- Excel如何对合并单元格数据进行排序
- 淘集集官宣破产,创业不易,且行且珍惜
- 《Windows 8 权威指南》——2.4 Aero与Metro的触摸对比
- 信息安全网络安全到底有哪些资质?被大家追逐。。。
- 卡片游戏--循环队列实现
- 量子通信,永不陷落的安全堡垒?
- Qt:QTextStream
- 【新闻推荐系统】(task1)系统搭建基本流程
- EmguCV的学习日志(一)
- 如何优雅的用Axure绘制高保真原型心得分享
- rpc介绍,和PHP常用的rpc框架
热门文章
- 代码分析 | 单细胞转录组Normalization详解
- python爬取商城数据_Python爬取新版CRMEB小程序商城后台订单数据,保存为excel
- 第43课 最大公约数 动动脑 第2题《小学生C++趣味编程》
- RTX5 | 配置文件RTX_Config.h(一)
- iOS 移动端overflow:auto 滚动不平滑及bug处理
- 语言条件语序心得_教师心得:提高34岁幼儿口语表达能力的策略
- 标准时间校对_光源色灯箱标准原理
- HTML期末学生大作业-乒乓球网页作业html+css+javascript
- win10+deepin双系统安装方法(UEFI+GPT)
- java $ class_java文件编译后额外生成的$1.class是怎么一回事