我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux下/var/run/目录下的pid文件有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux下/var/run/目录下的pid文件有什么用

这篇文章主要介绍了Linux下/var/run/目录下的pid文件有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

先给大家介绍下Linux下/var/run/目录下的pid文件,具体详解如下所示:

linux系统中/var/run/目录下的*.pid文件是一个文本文件,其内容只有一行,即某个进程的PID。.pid文件的作用是防止进程启动多个副本,只有获得特定pid文件(固定路径和文件名)的写入权限(F_WRLCK)的进程才能正常启动并将自身的进程PID写入该文件,其它同一程序的多余进程则自动退出。

编程实现:

 调用fcntl()系统调用设置指定的pid文件为F_WRLCK锁状态,如果锁成功则写入当前进程的PID,进程继续往下执行;如果上锁失败则说明已经有同样的进程在运行了,当前进程退出。

#define PID_FILE "/var/run/xxxx.pid"int lock_file(int fd){  struct flock fl;  fl.l_type = F_WRLCK;  fl.l_start = 0;  fl.l_whence = SEEK_SET;  fl.l_len = 0;  return (fcntl(fd, F_SETLK, &fl));}int alone_runnind(void){  int fd;  char buf[16];  fd = open(PID_FILE, O_RDWR | O_CREAT, 0666);  if (fd < 0)  {    perror("open");    exit(1);  }  if (lock_file(fd) < 0)  {    if (errno == EACCESS || errno == EAGAIN)    {      close(fd);      printf("alone runnind\n");      return -1;    }    printf("can't lock %s: %s\n", PID_FILE, strerror(errno));  }  ftruncate(fd, 0);  //设置文件的大小为0  sprintf(buf, "%ld", (long)getpid());  write(fd, buf, strlen(buf) + 1);  return 0;}

需要注意:

程退出后该进程加的锁自动失效;
2.进程关闭了该文件描述符fd,则加的锁失效。(所以整个进程生命周期内不能关闭该fd);
3.锁的状态不会被子进程继承,如果进程关闭则失效而不管子进程是否运行。

下面介绍下Linux下/var/run目录下的pid文件作用

在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) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

感谢你能够认真阅读完这篇文章,希望小编分享的“Linux下/var/run/目录下的pid文件有什么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux下/var/run/目录下的pid文件有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux下/var/run/目录下的pid文件有什么用

这篇文章主要介绍了Linux下/var/run/目录下的pid文件有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先给大家介绍下Linux下/var/run/目录下的p
2023-06-09

Linux下/var/run/目录下的pid文件详解及pid文件作用

先给大家介绍下linux下/var/run/目录下的pid文件,具体详解如下所示: linux系统中/var/run/目录下的*.pid文件是一个文本文件,其内容只有一行,即某个进程的PID。.pid文件的作用是防止进程启动多个副本,只有获
2022-06-04

Linux proc目录下子文件或子文件夹有什么作用

这篇文章主要介绍“Linux proc目录下子文件或子文件夹有什么作用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux proc目录下子文件或子文件夹有什么作用”文章能帮助大家解决问题。一.
2023-07-05

linux怎么遍历目录下所有的文件夹

在Linux中,可以使用以下命令来遍历目录下所有的文件夹:使用find命令:find /path/to/directory -type d将/path/to/directory替换为要遍历的目录的路径。上述命令将递归地列出指定目录下的所
2023-10-21

Linux系统下的proc目录有哪些文件

本篇内容介绍了“Linux系统下的proc目录有哪些文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!/proc/devices文件 这个文
2023-06-12

LINUX删除目录下所以文件的方法是什么

使用命令:rm -rf 目录名/*LINUX删除目录下所以文件时要注意:1.确认目录是否正确:在删除目录下所有文件之前,一定要确认当前所在的目录是否正确,否则可能会误删其他目录下的文件。2. 备份重要文件:在删除目录下所有文件之前,一定要备
2023-06-07

Linux系统下的hosts文件有什么用

本篇内容介绍了“Linux系统下的hosts文件有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!hosts文件hosts &mdash
2023-06-12

Linux下怎么统计当前文件夹下的文件个数、目录个数

本篇内容介绍了“Linux下怎么统计当前文件夹下的文件个数、目录个数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1) 统计当前文件夹下文件
2023-06-09

Linux系统怎么删除当前目录下所有文件

本篇文章为大家展示了Linux系统怎么删除当前目录下所有文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Linux系统如何删除当前目录下的所有文件呢?当提到删除肯定就会想到rm -f *,这是一
2023-06-28

怎么使用shell查看目录下所有文件

在Shell中使用以下命令可以查看目录下所有文件:ls如果要查看包括隐藏文件在内的所有文件,可以使用以下命令:ls -a如果要查看更详细的文件信息,可以使用以下命令:ls -l如果要按时间顺序列出文件,可以使用以下命令:ls -lt
怎么使用shell查看目录下所有文件
2024-04-03

linux Shell获取某目录下所有文件夹的名称

查看目录下面的所有文件:#!/bin/bash cd /目标目录 for file in $(ls *) doecho $file done延伸的方法,查看目录下面的所有目录#!/bin/bash cd /export/bak/origin
2022-06-04

linux查看目录下所有文件的命令是哪个

这篇文章主要讲解了“linux查看目录下所有文件的命令是哪个”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux查看目录下所有文件的命令是哪个”吧!linu
2023-04-20

Linux中怎么查看当前目录下的文件和文件夹

在Linux中,可以使用以下命令来查看当前目录下的文件和文件夹:使用ls命令:ls命令用于列出当前目录下的所有文件和文件夹。ls使用ls -l命令:ls -l命令用于以详细列表的方式列出当前目录下的所有文件和文件夹。ls -l使用ls -a
Linux中怎么查看当前目录下的文件和文件夹
2024-03-06

怎么在Linux 中批量提取文件夹下所有目录

本篇文章给大家分享的是有关怎么在Linux 中批量提取文件夹下所有目录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。打开CMD窗口输入命令生成文件结果截图以上就是怎么在Linu
2023-06-09

Linux主目录中的隐藏文件有什么作用

这篇文章主要介绍“Linux主目录中的隐藏文件有什么作用”,在日常操作中,相信很多人在Linux主目录中的隐藏文件有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux主目录中的隐藏文件有什么作用
2023-06-16

linux如何复制一个目录下的所有文件到当前工作目录

本文介绍了在Linux系统中使用命令行复制目录及其内容到当前工作目录的方法,包括使用cp、rsync和tar命令,以及使用GUI文件管理器。文章强调了使用-r或-a选项保留文件属性和时间戳的重要性,并提醒目标目录必须存在才能成功复制。
linux如何复制一个目录下的所有文件到当前工作目录
2024-04-02

解析DedeCms中data目录下的sessions是什么文件

问题: 请问我们站长,Ded编程客栈ecms中data目录下的sessions是什么文件?每天都有许多,里面的文件越来越多,占用空间越来越大,请DYnkb问能不能删除www.cppcns.com?删除后会造成什么后果吗? 回答: 这是Ded
2022-06-12

linux Shell如何获取某目录下所有文件夹的名称

这篇文章主要为大家展示了“linux Shell如何获取某目录下所有文件夹的名称”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux Shell如何获取某目录下所有文件夹的名称”这篇文章吧。
2023-06-09

编程热搜

目录