C/C++中 如何只允许运行一个程序实例?多列一些方法。

还有C/C++有提供什么相关的函数吗?... 还有 C/C++ 有提供什么相关的函数吗? 展开
 我来答
longinus_dean
推荐于2017-09-28 · TA获得超过2282个赞
知道小有建树答主
回答量:1097
采纳率:50%
帮助的人:1505万
展开全部
一般来说的办法就是怎么想让第二次运行知道已经有程序在运行了,或者说怎么能通知第二个程序已经有文件在运行了

例如程序运行后如果程序运行目录没有文件a.txt,就在程序运行目录新建一个文件a.txt,关闭的时候删除,这样第二次运行发现已存在了这个文件,说明程序已经在运行,故第二次运行直接退出

例如第一个运行程序用系统函数在本地监听一个socket端口,第二次运行程序发现这个端口已经被占用或者能连接,就知道已经有程序在运行了(例如smplayer就这样搞的)

例如第一个运行的程序在注册表某个地方写入一个1,退出时写入0,第二次运行的程序发现注册表这个地方是1就退出,如果是0就可以继续运行了,也就是其实是第一次运行

反正无论什么办法,具体要看你觉得怎么样合适才行的呢。还可以去找系统的进程列表,还可以测试某些环境变量啊,反正方法是很多的是死的,人是活的。
百度网友ae16a63
2015-12-02 · TA获得超过247个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:115万
展开全部
可以在某个指定路径下写一个文件,每次程序先检查该文件是否存在,存在就认为已经启动一个实例,退出时删除该文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e34e359
推荐于2017-09-20 · TA获得超过130个赞
知道答主
回答量:49
采纳率:100%
帮助的人:14.6万
展开全部
通过if(GetLastError() == ERROR_ALREADY_EXISTS)来进行判断,GetLastError()是API函数,该函数返回值为调用的线程的错误代码值(unsigned long),代码183(ERROR_ALREADY_EXISTS)表示文件已存在,无法创建该文件。例如:在你的工程名.cpp文件的InitInstance()函数中,添加如下代码:
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已经有XX程序在运行!",MB_ICONEXCLAMATION);
return FALSE;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangmingsuyang
2012-03-05 · TA获得超过317个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:105万
展开全部
什么叫做一个程序实例?
你VC编译同一个工程能启动多个?还是你说的是在工程中启动线程?请说清楚一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式