看板java
标 题Re: [问题] 如何让java执行档在OS上同时间只能跑一只
发信站KKCITY (Tue Jul 17 20:53:59 2007)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.chu!Leo.mi.chu!zoonews.ee.nt
※ 引述《[email protected] (just do it)》之铭言:
> ※ 引述《PsMonkey (痞子军团团长)》之铭言:
> : 很久很久以前(好像在讲童话故事)
> : 在 Javaworld@tw 那里有看到同样的话题
> : 那里建议的作法是用 lock 网路卡的一个 port
> : (现在很难有电脑没有网路卡吧 XD)
> : 另外就是 hypersonic 这个 database(hsqldb)
> : 如果你用 in-process 的 type 启动 hsqldb
> : 那他会产生一个 .lck 的档案
> : 理论上... 程式不正常关闭,下次还是能顺利启动
> : 也许你可以去找找看里头弄了什麽手脚 XD
> 我之前参考.net的作法
> 是程式执行时check os下process name
> 是否跟程式执行的process name一样
> 若一样则不执行此程式
> 但我发现java似乎无提供相对的api来使用
> 乾温ㄋㄟ
如果使用 JavaSE 5.0 以上的版本
可以利用 %java_home%\bin\jps.exe 去检测你执行的 process name
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("jps.exe")
InputStream is = process.getInputStream();
...
如果有相同的 process name
就将自己 System.exit(-1); 即可
--
┌─────◆KKCITY◆─────┐▇─┐KKADSL→六星级优质连线服务
│ bbs.kkcity.com.tw │┴ └─▇ 马上申请带你上网环游全世界!
└──《From:211.21.113.5
》──┘ KKADSL ┴ http://adsl.kkcity.com.tw
--