---让程序不能被多次运行
---问题
(1)因为守护进程是长时间运行而不退出,因此./a.out执行一次就有一个进程,执行多次就有多个进程。
(2)这样并不是我们想要的。我们守护进程一般都是服务器,服务器程序只要运行一个就够了,多次同时运行并没有意义甚至会带来错误。
(3)因此我们希望我们的程序具有一个单例运行的功能。意思就是说当我们./a.out去运行程序时,如果当前还没有这个程序的进程运行则运行之,如果之前已经有一个这个程序的进程在运行则本次运行直接退出(提示程序已经在运行)。
---实现方法:
(1)最常用的一种方法就是:用一个文件的存在与否来做标志。具体做法是程序在执行之初去判断一个特定的文件是否存在,若存在则标明进程已经在运行,若不存在则标明进程没有在运行。然后运行程序时去创建这个文件。当程序结束的时候去删除这个文件即可。
(2)这个特定文件要古怪一点,确保不会凑巧真的在电脑中存在的。

{
// 程序执行之初,先去判断文件是否存在
int fd = -1;
fd = open(FILE, O_RDWR | O_TRUNC | O_CREAT | O_EXCL, 0664);
if (fd < 0)
{
if (errno == EEXIST)
{
printf("进程已经存在,并不要重复执行\n");
return -1;
}
}
atexit(delete_file);    // 注册进程清理函数
int i = 0;
for (i=0; i<10; i++)
{
printf("I am running...%d\n", i);
sleep(1);
}
return 0;
}
void delete_file(void)
{
remove(FILE);
}

https://blog.csdn.net/u011572037/article/details/70162114

如何使电脑不会重复启动同一个进程相关推荐

  1. 电脑不停,电脑主机不停重复启动怎么办

    很多小伙伴工作和生活中都会使用到电脑,有些小伙伴在使用电脑的过程中会遇到电脑主机不停重复启动的情况,那当我们遇到电脑主机不停重复启动怎么办呢?为什么电脑一直重复启动呢?接下来就让小编来带着大家一起看看 ...

  2. 从硬盘启动计算机就卡住了,电脑插入U盘启动盘就卡住该怎么解决

    U盘插入电脑就卡住怎么办?我们在使用电脑时经常需要使用到U盘,但是有些用户反映只要电脑一插入U盘整个系统就会卡住不动,而拔出U盘的话过一阵子电脑就可以正常运行,那么遇到这种情况应该如何解决呢?下面小编 ...

  3. Win10系统如何查看电脑是否是UEFI启动模式

    Win10系统如何查看电脑是否是UEFI启动模式?现在越来越多的新电脑都采用UEFI来引导电脑系统,UEFI提高了开机后操作系统的启动速度,使电脑更加流畅,安全性更强,而传统的BIOS则没有UEFI用 ...

  4. 计算机无法从硬盘启动怎么办,电脑不能从硬盘启动应该怎么解决

    关于电脑不能从硬盘启动的问题,一些网友可能还不太了解,其实不难操作.那么下面就由学习啦小编来给你们说说电脑不能从硬盘启动的解决方法吧,希望可以帮到你们哦! 电脑不能从硬盘启动的解决方法: 1.首先:检 ...

  5. 误删了efi分区,怎么样恢复,使电脑开机回到windows

    误删了efi分区,怎么样恢复,使电脑开机回到windows 简单的过程 1.准备一个空的u盘制作pe 2.利用u盘进入系统,进行修复 3.设置好efi分区后,顺利进入 4.其他方法 简单的过程 如果选 ...

  6. 计算机正在准备从D盘中回收,电脑一直显示正在启动怎么选择重灌系统

    电脑一直显示正在启动怎么选择重灌系统以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 电脑一直显示正在启动怎么选择重灌系统 ...

  7. CDLinux制作U盘启动器,并设置电脑以U盘启动(一次失败经历的学习笔记)

    电脑(laptop)硬件型号:dell灵越5488 三个步骤+可能的问题记录或分析+反思收获+还存在的疑问: 一.制作U盘启动器(四个步骤) 下载CDLinux镜像文件 用UltraISO将其刻录进U ...

  8. 电脑主机不停重复启动怎么解决

    电脑使用的时间久后,难免会遇到各种各样的一些问题.最近就有网友反映说自己的电脑主板不停重复启动怎么办,不知道为什么电脑老是开机重启.导致这种情况发生的原因很多,那么小编就教下大家电脑主板重复启动的解决 ...

  9. 更改计算机bios密码怎么办,简单五步设置BIOS密码使电脑更安全

    欢迎来到学习啦,本文为大家提供如何设置BIOS密码使电脑更安全,欢迎大家阅读学习. 步骤1 启动电脑,然后按[Del]键进入BIOS设置主界面. 步骤2 在BIOS主菜单中,有两个设置密码的选项,它们 ...

最新文章

  1. 洛谷题单的Python版题解(有需要的小伙伴可以来看看哦~!)
  2. 神经网络和反向传播算法——反向传播算法本质上是随机梯度下降,链式求导法则而来的...
  3. 汉诺塔--(数据结构)
  4. python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
  5. 1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup
  6. 软件工程—团队作业1
  7. ]remove-duplicates-from-sorted-list-ii (删除)
  8. 第三课 SVM(2)
  9. return 0在c语言中是什么意思_单次T+0与蓝筹股试点T+0制度是什么意思,两者有何区别?...
  10. 产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)
  11. mac虚拟机搭建设置静态ip
  12. FPGA基础实验:点亮LED
  13. 【算法分析】多个对比算法的统计检验方法
  14. php双写绕过,PHP preg_系列漏洞小结
  15. 俞敏洪励志演讲:摆脱恐惧
  16. 微信小程序wxml和wxss样式
  17. python中编写一个函数求数值x的绝对值(python实验二)
  18. 概念建模(CDM)-------数据建模(一)
  19. “房山的房子会升值”--摘自《北京晚报》
  20. java计算机毕业设计线上旅行信息管理系统源代码+数据库+系统+lw文档

热门文章

  1. poj 2976 Dropping tests 01分数规划
  2. csu 最优对称路径(bfs+记忆化搜索)
  3. easyui弹出层在最顶层显示跳出iframe框架通用javascript代码
  4. 人与自然蠓的故事-上好像以前播过!
  5. 添加 code snippets (转)
  6. 8.Springcloud的Feign嵌入Ribbon实现接口式调用(改变restTemplate和Ribbon的调用方式)...
  7. Spring MVC数据绑定和表单标签的应用(附带实例)
  8. JUnit5 断言示例
  9. Servlet 自动刷新页面
  10. bootstrap 模态窗口按钮位置_Bootstrap 模态框(Modal)插件的使用