Re: [問題] 如何讓java執行檔在OS上同時間只能跑一隻
※ 引述《scdog.bbs@ptt.cc (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
--
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):