Jar*_*Par 10
我认为你需要在前进之前考虑一下你的情景.不止一次对"运行相同程序"有许多不同的解释.比如你呢?
所有这些都有不同的,虽然相似的解决方案.
最容易描述的是每台机器.在这种情况下,您想要创建一个名为Mutex.一个启动每个程序必须获得这个互斥锁,如果它们成功,它们会在进程生命周期内运行并持有互斥锁.否则其他一些程序正在运行并立即退出.
不幸的是,这种方法也有其缺点.如果我想弄乱你的程序,我可以创建一个具有相同名称的互斥锁.这将阻止您的程序运行任何实例,因为他们无法分辨谁拥有互斥锁,只是某些东西持有互斥锁.
如果是您的程序,则Windows下可能是最短的版本:
int main(int argc, char** argv)
{
CreateMutexA(0, FALSE, "Local\\$myprogram$"); // try to create a named mutex
if(GetLastError() == ERROR_ALREADY_EXISTS) // did the mutex already exist?
return -1; // quit; mutex is released automatically
// ... program code ...
}
Run Code Online (Sandbox Code Playgroud)
如果您需要的只是简单的检查,就不必发疯了……
| 归档时间: |
|
| 查看次数: |
16480 次 |
| 最近记录: |