领导安排了一个重要且紧急工作。其中一个要点,就是保证进程只有一个。而使用者可以运行多个实例。所以唯一办法就是在程序中互斥。怎么互斥?

  互斥锁。

  网络端口。

  文件锁。

  考虑到进程会崩溃,需要再启动,所以互斥锁方案不能用。网络端口绑定可以使用,文件锁也可以。考虑到私密性,吾决定使用文件锁。

  代码如下:

#define LOCK_FILE     "./process.lock"bool isRunningNow()
{int fd = open(LOCK_FILE, O_RDONLY | O_CREAT, 0644);if (fd < 0){return false;}//测试互斥锁定区域return (lockf(fd, F_TLOCK, 0) == 0);
}

使用lockf()保证应用单进程相关推荐

  1. mfc cef cefsettings 单进程 退出_PyTorch 64.进程池Pool的imap方法

    在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十几个还好,但 ...

  2. java如何保证redis设置过期时间的原子性_2020年4月Redis面试题和答案整理

    点关注,不迷路:持续更新Java相关技术及资讯!!! 关注.转发.评论头条号每天分享java 知识,私信回复"源码" 赠送Spring源码分析.Dubbo.Redis.Netty. ...

  3. python非阻塞多线程socket_Python实现web服务器之 单进程单线程非阻塞实现并发及其原理...

    在Python实现web服务器入门学习多进程.多线程实现并发HTTP服务器中,我们知道可以分别通过多进程.多线程的方式实现并发服务器,那么,是否可以通过单进程单线程的程序实现类似功能呢? 实际上,在P ...

  4. 单进程架构数据库谨防隐形杀手

    摘要:可能大多数DBA都觉得数据库就是数据库,不同的数据库可能在企业级特性上,性能上,稳定性上有些差别,其他的也就 原文链接:https://www.modb.pro/db/22495?cyn 可能大 ...

  5. php单进程锁定,强制PHP命令行脚本单进程运行的方法

    /** * 保证单进程 * * @param string $processName 进程名 * @param string $pidFile 进程文件路径 * @return boolean 是否继 ...

  6. (4.6.17.4)进程保活(三:JNI层初探):单进程单向循环式启动服务

    前言 我们先来看看Android4.4的源码,ActivityManagerService(源码/frameworks/base/services/core/Java/com/Android/serv ...

  7. 达梦DM8单进程多线程架构模式下各线程详解

    达梦数据库进程管理方式类似于Mysql,属于单进程多线程模式.数据库服务进程包含:DmServer(主服务进程)和DmAPService(备份服务进程).线程主要包括:监听线程.IO线程.工作线程.调 ...

  8. php是单进程运行的么,强制PHP命令行脚本单进程运行的方法

    /** * 保证单进程 * * @param string $processName 进程名 * @param string $pidFile 进程文件路径 * @return boolean 是否继 ...

  9. 计算机网络套接字编程实验-TCP单进程循环服务器程序与单进程客户端程序(简单回声)

    1.实验系列 ·Linux NAP-Linux网络应用编程系列 2.实验目的 ·理解并掌握在程序运行时从命令行读取数据的C语言编程方法: ·理解并掌握基于命令参数设置并获取IP与Port的C语言编程方 ...

  10. List再整理,从代码底层全面解析List(看完后保证收获满满)

    前言 本文为对List集合的再一次整理,从父集接口Collection到顶级接口Iterable再到线程不安全实现类:ArrayList.LinkedList,再到线程安全实现类:Vector(被弃用 ...

最新文章

  1. Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
  2. PHP中常见的提示对照表
  3. MySQL 内连接查询
  4. LINUX之网络编程j简述
  5. numpy库中的mat和array使用小结
  6. Milvus加入LF AI孵化,立志成为最流行的AI数据平台
  7. vi删除选中内容_如何优雅的删除代码-VIM
  8. JavaSE基础——GUI编程(Swing)
  9. linux 系统tty、pty和pts 的概念及区别
  10. WIN7下odbc数据源配置问题
  11. MATLAB入门教程
  12. FeHelper下载:(Chrome浏览器)
  13. uvlayout和MAYA的接口的问题
  14. Postman测试文件图片上传接口
  15. 【观察】智能+新时代,智慧酒店未来该何去何从?
  16. 在matlab上利用fft进行信号频谱分析_使用示波器进行信号频谱分析(FFT)的设置教学...
  17. 精品微信小程序校园第二课堂在线学习网+后台系统|前后分离VUE
  18. 一款学习游戏化的APP
  19. 运行时发现 xxx cannot be cast to xxx
  20. 阿里云被挖矿使用,导致cpu长期处于100%,ddgs进程,xWx3T进程,关于redis密码

热门文章

  1. java计算信息熵_Java计算文本字符的信息熵
  2. 用Java写一个递归遍历目录下面的所有文件
  3. iOS平台下闪退原因汇总(一):Ran out of trampolines of type 0/1/2 运行时间错误
  4. javascript测试题和参考答案
  5. Tech Insight携阿里云Link物联网平台助力实现“IoT全栈开发”
  6. 重建Oracle 11g R2控制台
  7. 微软宣布与中国电子科技集团筹建合资公司
  8. git tag — 标签相关操作
  9. Memcacher win7 安装测试
  10. 男子因惧内欲退还iPad 2苹果免费赠送