Linux/Unix下pid文件作用浅析

操作系统原理之Unix/Linux进程标识符pid管理探索 操作系统作为整个计算机系统的资源管理者,担任着有序而高效管理计算机资源的艰巨任务。操作系统资源管理的基本对象是进程,为了方便系统的管理,每一个进程需要一个进程标识符pid,这和国家为每一个居民编一个居民身份证号的目的完全一样。 在Unix/Linux中,进程标识符pid是一个16位的整数,它被顺序编号,最小号为0,最大号为32767,闲置的pid可重新使用。详见Unix源代码中的struct p... 阅读详情
在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) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行。
(Locks are associated with processes. A process can only have one kind of lock set for each byte of a given file. When any file descriptor for that file is closed by the process, all of the locks that process holds on that file are released, even if the locks were made using other descriptors that remain open. Likewise, locks are released when a process exits, and are not inherited by child processes created using fork.)


(5) 参考资料:
fcntl(文件锁)
表头文件 #include <unistd.h>
#include <fcntl.h>
函数定义int fcntl(int fd, int cmd, struct flock *lock);
函数解释fd:文件描写符
设置的文件描写符,参数cmd代表欲垄断的号召
F_DUPFD
复制参数fd的文件描写符,厉行获胜则归来新复制的文件描写符,
F_GETFD
获得close-on-exec符号,若些符号的FD_CLOEXEC位为0,代表在调用
exec()相干函数时文件将不会关闭
F_SETFD 设置close-on-exec符号,该符号以参数arg的 FD_CLOEXEC位定夺
F_GETFL获得open()设置的符号
F_SETFL改换open()设置的符号
F_GETLK获得文件锁定的事态,依据lock的描写,定夺是否上文件锁
F_SETLK设置文件锁定的事态,此刻flcok,构造的l_tpye值定然是F_RDLCK、F_WRLCK或F_UNLCK,
万一无法发生锁定,则归来-1
F_SETLKW 是F_SETLK的阻塞版本,在无法获得锁时会进去睡眠事态,万一能够获得锁可能捉拿到信号则归来
参数lock指针为flock构造指针定义如下
struct flock {
...
short l_typejngaoy.com;
short l_whence;
off_t l_start; 锁定区域的开关位置
off_t l_len; 锁定区域的大小
pid_t l_pid; 锁定动作的历程
...
};
1_type有三种事态:
F_RDLCK读取锁(分享锁)
F_WRLCK写入锁(排斥锁)
F_UNLCK解锁
l_whence也有三种措施
SEEK_SET以文件开始为锁定的起始位置
SEEK_CUR以现在文件读写位置为锁定的起始位置
SEEK_END以文件尾为锁定的起始位置
归来值 获胜则归来0,若有讹谬则归来-1
l_len:加锁区的长度
l_pid:具有阻塞目前历程的锁,其持有历程的历程号储藏在l_pid中,由F_GETLK归来
等闲是将l_start设置为0,l_whence设置为SEEK_SET,l_len设置为0
2-1 AUTOSAR ASW概述 应用软件层(Application Software Layer,ASW)位于AUTOSAR整个架构的顶层。它由各种AUTOSAR Software Component(SW-C)组成,每个SW-C封装了各种应用的功能集。每个SW-C只能运行在一个ECU中。ASW层的设计目标是实现功能的可重用性和可配置性。它通过封装底层提供的服务,为上层应用层提供统一的接口。ASW层的开发可以基于AUTOSAR提供的标准化软件组件,也可以根据具体需求进行定制开发。 阅读详情

相关推荐

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

不忘初心 方得始终 2981

linux pid文件作用,Linux系统的pid文件作用

pid文件就是一个简单的文本文件,里面存放了一个pid,process id,作用是用来防止同一个程序运行多个副本(或实例),作用机制是,程序启动时,去读取指定位置和名称的pid文件,将里面的pid取出,查找此pid是否在系统process列表中(可以理解为ps -A命令的显示),如果存在,则当前的实例不能运行,因为已经存在一个运行实例了,如果不存在,则正常启动运行。由于可能存在同一个程序同时启动...

weixin_34894242的博客 2995

保姆级教程:用Qlib和LightGBM从零搭建你的第一个AI量化选股策略(附完整代码)

本文提供了一份详细的教程,教你如何使用Qlib和LightGBM从零搭建AI量化选股策略。教程涵盖了环境配置、数据获取、特征工程、模型训练和策略回测等关键步骤,并附有完整代码和常见问题解决方案,适合量化投资初学者快速上手。

weixin_29191081的博客 445

implicit declaration of function —— 函数隐式声明 警告

implicit declaration of function ——函数隐式声明 警告

weixin_51684355的博客 1万+

基于 OptiSystem 的掺铒光纤放大器(EDFA)分析

通过构建 EDFA 仿真模型,系统分析了铒离子掺杂半径、离子浓度、光纤长度及泵浦功率等关键参数对放大器增益和噪声特性的影响规律,为 EDFA 的优化设计提供了理论依据与仿真支撑。继续增大至 9μm,增益趋于稳定(约 19dB)。继续增加至 200mW,增益仅增加 2dB,表明泵浦功率存在阈值效应(约 100mW),超过后增益饱和明显。:作为增益介质,主要参数包括光纤长度(5~50m)、铒离子掺杂半径(1~10μm)、离子浓度(1×10²⁵~5×10²⁵m⁻³)、纤芯半径 2.2μm、数值孔径 0.24。

2501_91855190的博客 2676

从Datasheet到可用的Verilog模块:手把手教你为N25Q128 SPI Flash写状态机驱动

本文详细介绍了如何从Datasheet到实现可用的Verilog模块,手把手教你为N25Q128 SPI Flash编写状态机驱动。文章涵盖SPI Flash的核心工作机制、数据手册解析方法、Verilog状态机设计实践以及调试与性能优化技巧,特别适合FPGA开发者和硬件设计工程师参考。

weixin_30596023的博客 176

Linux /proc/pid 探索

文件描述符目录,每个数字表示一个 FD,符号链接指向实际文件/socket/pipe(:进程的资源限制(如最大文件数、内存限制、core dump 大小)。:进程状态、PID、PPID、UID/GID、线程数等。:内存详细统计,包括 RSS、PSS、共享/私有内存等。:文件描述符详细信息(offset、flags 等)。:包含进程所有线程的子目录,每个线程有类似的。:进程虚拟内存映射情况(堆、栈、共享库等)。:调度器信息(调度策略、优先级、运行统计)。:进程当前工作目录(符号链接)。:进程看到的根目录。

芯片驱动开发实践 1128

链路监控pinpoint3.0.3安装部署(2)

本文详细介绍了Pinpoint 3.0.3分布式链路监控系统的安装部署过程。主要内容包括:1)数据库安装(HBase、MySQL、Redis、Pinot)的详细配置步骤;2)中间件Zookeeper和Kafka的安装;3)Pinpoint三大组件的部署:Collector、Web和Batch的配置文件修改和启动脚本。文章特别强调了使用-starter-exec.jar包的重要性,并提供了各组件所需的详细参数配置,包括数据库连接、Zookeeper地址、Kafka配置等关键信息。

zouzou_888的博客 1375

Linux/Unix下pid文件作用浅析(转)

http://www.linuxeden.com/html/security/20121228/133780.html (1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。 用cat命令可...

congdiku5262的博客 184

GPS-SDR-SIM使用详解

GPS-SDR-SIM 是一款开源工具,能够生成 GPS 基带信号数据流,这些数据流可通过软件定义无线电(SDR)平台(如 ADALM-Pluto、bladeRF、HackRF、USRP 等)转换为射频(RF)信号。简单来说,它能模拟 GPS 卫星信号,帮助开发者或爱好者测试 GPS 接收设备的性能,而无需依赖真实的卫星信号。

qq_35621280的博客 1241

【现代信号处理】01 -概率论与随机过程回顾

概率论与随机过程回顾 文章目录概率论与随机过程回顾1. 统计模型的相关概念1.1 统计实验(不确定性)1.2 样本点1.3 样本空间Ω1.4 概率1.5.统计模型是先验的2. 概率和统计的差异2.1 联系2.2 差异2.3.1 概率和统计问题的三要素2.3.1.1 model-模型2.3.1.2 data-数据2.3.1.3 decision-决策2.3.2 关系图3. 样本空间的重要性3.1 贝朗特悖论3.1.1 解法一3.1.2 解法二3.1.3 解法三3.2 结论4.概率相关的概念4.1 随机变量4.

qq_41741344的博客 1405

linux pid文件作用,linux/unix下 pid文件作用浅析

lock.l_type=F_WRLCK;lock.l_whence=SEEK_SET;if(fcntl(fd,F_SETLK,&lock)//锁定不成功,退出......}sprintf(buf,"%d\n",(int)pid);pidsize=strlen(buf);if((tmp=write(fd,buf,pidsize))!=(int)p...

weixin_42411003的博客 316

c++ mysql_init 返回无效指针_C++操作MYSQL遇到的一些问题

首先 我使用的是 vcpkg上面是我装的一些库《大大安利vcpkg 安装时一定要使用powershell进行编译装上vcpkg后装ligmariadb这个库,这个对Mysql操作还是挺方便的,然后说一下 在装库时碰到的一些问题1.网络问题1.参考了一下 github上的答案 将下载失败的url拷下来 自己下 然后再重新开始安装《vcpkg在安装时每一个需要下载的 都会提供url-仔细找,2.这个问...

weixin_32176627的博客 680

linux .pid,Linux/Unix下pid文件作用浅析

在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件。而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。用cat命令可以看到。(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文...

weixin_42237487的博客 241

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

linux/unix下 pid文件作用浅析

l在linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件。而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?  (1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。  用cat命令可以看到。  (2) pid文件的作用:防止进程启动多个副本。只有获

当年老王的专栏 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 日志级别
下一篇: Redis 服务器全攻略
github_17527205
博客等级 码龄12年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值