应用程序的单个实例

Posted

技术标签:

【中文标题】应用程序的单个实例【英文标题】:Single instance of application 【发布时间】:2021-01-27 06:42:14 【问题描述】:

一般来说,我们可以通过哪些方式来确保? 这并不特定于任何编程语言。 我只想知道如何防止启动应用程序的第二个实例?

【问题讨论】:

您检查进程是否正在运行,如果是,请不要再次启动它。例如 Windows 中的 TaskManager 显示或 Linux 中的 Top。您选择的编程语言可能/应该有办法获取正在运行的进程列表。 如果你想确保防止用户故意复制和修改可执行文件名称,Mutex 可能更可取 只是用一些语言的方法链接一些相关的帖子:C#, C++, Python, VB.NET, Java @costaparas 我不是从编程语言的角度问的。但我想知道我们可以防止第二个实例启动的可能方法列表?我们可以假设这是一个操作系统面试问题? 【参考方案1】:

我可以想到两种方法:

    应用端: 在指定位置的某处创建锁定文件。如果它已经存在,则另一个实例正在运行,否则创建锁文件。如果程序退出,请删除锁定文件。 (例如 X 或 firefox 这样做)

    操作系统方面:(虽然这不太实用)

2.1。对于所有启动的二进制文件,在某处存储一些哈希值。如果二进制文件已经启动(例如哈希值已经可用),请不要启动它。

2.2。这会经常失败,因为你只能运行一个 JVM、一个 Python 解释器等等。因此,为了改进这一点,操作系统可以将命令行参数添加到哈希值中。

【讨论】:

以上是关于应用程序的单个实例的主要内容,如果未能解决你的问题,请参考以下文章

应用程序的单个实例

在单个 AppDomain 上运行多个应用程序实例时如何防止属性覆盖?

单个应用程序中有多个 QJSEngine 实例?

Flask 应用程序中的单个 apscheduler 实例

自定义引导程序作为单个实例

通知弹出窗口不适用于单个实例