你的意思是不是判断你自己的程序吧?
而是判断在操作系统中是否有一个进程在运行这个恐怕要迫使你使用操作系统提供的命令
导致你的程序不能跨平台运行在windows下可以使用tlist命令,在linux下可以使用ps命令
然后在返回值中看是否有代表相关进程的字符windows下代码如下:
private void runOnce() {
String s;
s = "javaw.exe";
try {
java.io.BufferedReader id = new java.io.BufferedReader(new java.io.
FileReader(ID_FILENAME));
String ss = id.readLine();
if (ss != null)
s = ss;
id.close();
}
catch (Exception e) {
//System.out.println(e);
}
try {
int i = 0;
java.lang.Process p = java.lang.Runtime.getRuntime().exec("Tlist -s"); InputStream[] inStreams =
new InputStream[] {
h.getInputStream(), h.getErrorStream()};
ConsoleTextArea cta = new
ConsoleTextArea(inStreams);
System.out.println(cta.toString()); java.io.BufferedReader in = new java.io.BufferedReader(new java.io.
InputStreamReader(p.getInputStream())); String ss = ""; while ( (ss = in.readLine()) != null) {
if (ss.indexOf(s) != -1) {
i++;
}
}
in.close(); if (i > 1) {
javax.swing.JOptionPane.showMessageDialog(this, "程序已经运行!");
System.exit(0);
}
}
catch (Exception e) {
javax.swing.JOptionPane.showMessageDialog(this, "未找到Tlist程序或I/O错误!");
}
}
而是判断在操作系统中是否有一个进程在运行这个恐怕要迫使你使用操作系统提供的命令
导致你的程序不能跨平台运行在windows下可以使用tlist命令,在linux下可以使用ps命令
然后在返回值中看是否有代表相关进程的字符windows下代码如下:
private void runOnce() {
String s;
s = "javaw.exe";
try {
java.io.BufferedReader id = new java.io.BufferedReader(new java.io.
FileReader(ID_FILENAME));
String ss = id.readLine();
if (ss != null)
s = ss;
id.close();
}
catch (Exception e) {
//System.out.println(e);
}
try {
int i = 0;
java.lang.Process p = java.lang.Runtime.getRuntime().exec("Tlist -s"); InputStream[] inStreams =
new InputStream[] {
h.getInputStream(), h.getErrorStream()};
ConsoleTextArea cta = new
ConsoleTextArea(inStreams);
System.out.println(cta.toString()); java.io.BufferedReader in = new java.io.BufferedReader(new java.io.
InputStreamReader(p.getInputStream())); String ss = ""; while ( (ss = in.readLine()) != null) {
if (ss.indexOf(s) != -1) {
i++;
}
}
in.close(); if (i > 1) {
javax.swing.JOptionPane.showMessageDialog(this, "程序已经运行!");
System.exit(0);
}
}
catch (Exception e) {
javax.swing.JOptionPane.showMessageDialog(this, "未找到Tlist程序或I/O错误!");
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货