c++ - 当同一个程序打开两次时,如何使用 C++ 杀死一个程序?
问题描述
比如说,我有一个名为“A.exe”的 C++ 程序,如果有人打开它两次,该程序应该杀死它,然后作为一个单独的程序运行。
规则:它应该被那个程序杀死(而不是使用任何其他程序)。
我的问题是如果我使用
system("taskkill /im A.exe /t");
但它也会自杀。
解决方案
使用命名互斥锁,它一次只能由一个线程持有,在程序开始时创建它,如果您无法获取互斥锁,那是因为您的程序的另一个副本已经在运行(并且拥有互斥体),然后您可以安全地终止程序(无需调用任何外部程序,依靠寻找特定的文件名等)
推荐阅读
- php - 为什么 Laravel 和 Pusher 不能在 localhost 上工作,而是在生产上工作?
- swift - 无法识别的“swift_version”键
- javascript - 如何在页面中间放置一个按钮?
- java - 更改 firebase 兄弟值
- git - 如何在 git /macbook 中将 VScode 设置为核心编辑器
- javascript - 为什么在变量名前加冒号是js中的有效代码?
- python - 如何通过迭代另一个工作表来创建工作表的副本,同时排除数组中的某些行。?
- pandas - 散景 - ValueError:关键字参数序列
- azure - Azure 云服务(经典)- 以任何方式将 Diagnostic.Trace 日志记录到 BLOB 存储
- python - Keras LSTM 输入 ValueError: Input 0 is in compatible with layer lstm_1: expected ndim=3, found ndim=4