怎样在系统中只起动一个程序,即在系统的进程中只看到一个程序?

jerry_cao 2003-09-15 10:09:34
我有一台win server,有两台终端通过win客户端连接进来,但我只能让一台终端启动程序,而不能让两台终端同时启动程序,或让一台终端启动两个实例,我该怎样做,Help me!
...全文
28 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
congliu 2004-03-09
  • 打赏
  • 举报
回复
gz
eccalc 2004-03-09
  • 打赏
  • 举报
回复
互斥对象的方法不错!
不过它也有一定的缺陷,即在应用程序非法退出时,下一次就可能会被系统误解为已经有一个实例在运行,通常处理是重启计算机,这一点碰的不多。
一般处理:
设立两个变量,第一个是运行标志:程序启动时为true,关闭为false;另一个是正常退出标志:启动时为flase,在程序退出时设置为true;即正常退出时它能还原true值。
在程序启动时同时检测两个变量。发现正常退出标志为false时,无论运行标志如何,照样启动它,然后处理运行标志让它恢复正常!
asimpleman 2004-03-08
  • 打赏
  • 举报
回复
up
oceankang 2003-09-15
  • 打赏
  • 举报
回复
CreateMutex(NULL,false,"大客户信息管理系统");
ErrCd = GetLastError();
if(ErrCd == ERROR_ALREADY_EXISTS)
{
Application->MessageBox(" 程 序 已 经 运 行!"," 警 告",MB_ICONSTOP);
return 0;
}
ccrun.com 2003-09-15
  • 打赏
  • 举报
回复
禁止让一台终端启动两个实例,可以用互斥。至于在服务端判断当前终端数量,如果是自己的程序,在socket连接中可以搞定。
ccrun.com 2003-09-15
  • 打赏
  • 举报
回复
禁止一台终端启动两个实例,这个可以用互斥。
baggio_zyj 2003-09-15
  • 打赏
  • 举报
回复
创建一个互斥对象:
createmutex(....);
用法自己查吧!
asimpleman 2003-09-15
  • 打赏
  • 举报
回复
gz
swites 2003-09-15
  • 打赏
  • 举报
回复
楼上大家说的对!
zhpsam109 2003-09-15
  • 打赏
  • 举报
回复
学习!
zihan 2003-09-15
  • 打赏
  • 举报
回复
如何防止一个没有窗体的WINDOWS程序的重复运行?
用互斥(Mutex),Mutex本来是多线程同步用的,防止
多个线程访问同一资源而引发冲突。用CreateMutex可以
创建Mutex对象,实质上是一个kernel对象。

在任何Win32程序(包括GDI和Console)的启动部分加上
以下代码(Console程序的main函数、MFC程序的CWinApp
派生类的InitInstance成员函数、RawSDK程序的WinMain
函数):
hMutex=CreateMutex(
NULL,//nosecurityattributes
FALSE,//initiallynotowned
"RunOnlyOneInstance");//命名Mutex是全局对象
//在所有的process都可以访问到

if(hMutex==NULL||
ERROR_ALREADY_EXISTS==::GetLastError()){
//程序第二次或以后运行时,会得到Mutex已经创建的错误
returnFALSE;
}
嘿嘿,是不是不用FindWindow优雅简洁多了?

另外,如果要限定程序同时可运行n个实例怎么办?
Tips:用信号量(Semaphore)。



 本课程的主题是: 透析Linux系统编程    不同于市面上的课程,只会把核心主题放到函数的讲解,本课程的核心主题是 Linux系统编程的经验总结 ;    当你在系统编程,调用一个系统调用来解决问题时,是否考虑过 该系统调用是否会对系统性能带来影响?是否还有最优的方式?    当你在系统编程过程,遇到问题,是否只是检查代码逻辑,而不会去深入底层去查找问题 ?    本课程将一一解决系统编程带给你的难点,疑点?    比如控制文件IO章节,给出系统文件操作的默认行为,应用如何修改这些行为,给出文件IO操作的最优方式;   比如系统调用,给出系统调用原理;系统调用的正确使用方式等   比如进程实现,结合底层,对比线程,深入理解两者;给出进程使用经验总结;   比如线程同步,不仅引出互斥锁 条件变量 自旋锁 读写锁使用方式,同时给出各个机制的应用场景 ;   比如 进程间通信,引出各个进程间通信的机制原理,给出各个进程间通信的应用场景;   比如 信号,给出信号在进程信号处理处理函数的正确使用方式,给出在多线程信号处理的正确方式;   比如 共享库,给出共享库的实现机制,给出共享库的正确使用方式;   同时 会讲解 系统安全问题 ; 可执行程序的静态布局和动态布局 ;灵活使用内存映射和虚拟内存;系统事件跟踪;   给出程序性能的调优思路;    丰富的项目实例讲解 ,提供宝贵的商业项目开发经验 ; 

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧