如何确定应用程序是否已经在运行?C便携式LinuxWin

如何确定应用程序是否已经在运行?C便携式LinuxWin,第1张

概述如何确定应用程序是否已经在运行? C便携式Linux / Win

有没有办法编写一个C代码,让我们可以确定一个应用程序的以前的实例是否已经在运行? 我需要用linux和windows的便携方式来检查这两个版本,都使用最新版本的GCC。

便携式代码的任何例子都会有很大的帮助。 我现在看到两个select:

检查进程列表。 这里的linux有很好的工具,但是我不认为相同的function适用于windows。 也许一些GNU图书馆的SO? 什么图书馆,或function?

保存并locking一个文件。 现在,如何做到这一点,两个系统都可以理解? 一个问题是在哪里保存文件? path树与每个系统不同。 另外,如果select相对path,两个应用程序仍然可以在不同的目录中使用不同的locking文件运行。

谢谢! 贝乔。

PS。 SO有不同的要求,所以如果你知道一个而不是另一个,请回答。 毕竟,如果没有可移植的“单一”方式,我仍然可以使用#ifdef和提出的代码作为答案。

从儿童GUI过程发送文本到控制台父母的最简单方法是什么?

Win32 C ++控制台清除屏幕不闪烁

如何打开程序中的空控制台窗口(windows)

控制台中的铃声挂起windows 7

使用脚本/batch file在窗口中自动点击鼠标

C语言(不是C ++),控制台应用程序,gcc,linux和windows

当我通过RDP连接或更改分辨率时,为什么会得到java.lang.NullPointerException?

使用Mono从linuxterminal构buildC#控制台项目

从控制台C ++应用程序将stdout输出着色到windows cmd.exe

Delphi PostMessagefindlpWindowname?

设置窗口高度大于屏幕高度

不幸的是,如果你把自己限制在C,你可能会很难做到这一点。 使用C ++,有进程间进程的named_mutex ,但在C上,你必须:

UNIX(包括Mac OS):打开某个文件并将其放到某个文件中。 传统上你也会把你当前的PID写入这个文件。 注意:这可能在NFS上不安全; 但无论如何,你的选择是非常有限的。 在linux上,如果你想确保本地和安全的锁定,你可以使用/dev/shm路径。

windows:打开并锁定一个已命名的互斥锁

对于windows来说,互斥量效果很好。

http://msdn.microsoft.com/en-us/library/ms682411(v=vs.85).aspx

文章还提到了一个互斥体的替代方案….

要将您的应用程序限制为每个用户一个实例,请在用户的配置文件目录中创建一个锁定的文件。

Unixland中规范的方法是让进程将自己的PID写入已知位置的文件。 如果这个文件存在,那么程序可以检查自己的pID(通过系统调用可用)与该文件中的pID,如果不熟悉,则知道另一个进程正在运行。

C不提供内置设施来检查应用程序是否已经运行,因此,跨平台很难/不可能。 但是,在linux上,可以使用IPC 。 而且,在windows(我不是很有经验的这个类别),你可能会觉得这很有帮助。

总结

以上是内存溢出为你收集整理的如何确定应用程序是否已经在运行? C便携式Linux / Win全部内容,希望文章能够帮你解决如何确定应用程序是否已经在运行? C便携式Linux / Win所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存