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

简介:

---让程序不能被多次运行
---问题
(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

目录
相关文章
|
11天前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
4月前
|
Windows
网友的电脑中发现scvhsot.exe的进程和启动项
网友的电脑中发现scvhsot.exe的进程和启动项
续:网友的电脑中发现scvhsot.exe的进程和启动项
续:网友的电脑中发现scvhsot.exe的进程和启动项
|
5月前
|
JavaScript Windows
NodeJs——如何获取Windows电脑指定应用进程信息
NodeJs——如何获取Windows电脑指定应用进程信息
141 0
|
安全 芯片 Python
电脑芯片inter i7 10700, 进行多进程并行运算时,最多可以选16个线程
------------电脑芯片是inter i7 10700, 应该是 8核16线程, 在跑python代码,multiprocessing 模块 进行多进程并行运算时,最多可以选多少个线程 由于电脑芯片是Intel i7 10700,应该有8个物理核心和16个逻辑线程(因为支持超线程技术),所以最多可以选择使用16个线程来并行运行Python代码。
412 0
用Mutex或进程限制用户在一台电脑上同时打开两个程序
转自 http://www.cnblogs.com/mediar/archive/2005/08/25/223021.html 经常我们希望一个程序打开了以后,不希望打开另一个实例。经过摸索,发现在有两个方法可以解决,一个是通过进程,另一个是对过互 Mutex 类。
710 0
|
6月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
6月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
211 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)

热门文章

最新文章

相关实验场景

更多