控制我的罐子的过程名称

时间:2013-01-28 04:28:25

标签: java

我想知道有什么方法可以控制我的罐子开始的过程的名称,即, 我在java中创建了一个.jar文件,每当我点击它时,它都会导致一个名为javaw.exe的进程,我想控制这个名字。 我想这样做,因为当我点击我的jar文件然后如果它已经运行它应该停止并且应该启动一个新的,即,我想每次通过停止前一个点击它来运行一个新的线程(进程) 。 如果我终止名为javaw.exe的进程,所有名为javaw.exe的进程都将死掉(如果我运行的是多个程序)。所以,我需要改名。 Plz的帮助。 谢谢!

3 个答案:

答案 0 :(得分:3)

javaw正在运行没有任何问题。 From the documentation

  

javaw命令与java相同,但javaw没有关联的控制台窗口。当您不希望出现命令提示符窗口时,请使用javaw。但是,如果由于某种原因启动失败,则javaw启动程序将显示一个包含错误信息的对话框。

最终,javaw在没有控制台窗口的情况下运行程序。更改该名称可能会在以后导致一些严重问题,因此您需要保留该特定程序名称。

答案 1 :(得分:1)

为什么重新发明轮子?已有标准方法可以防止同一程序的两个副本运行。通常,它涉及创建“标志”文件,因为文件系统保证目录更新是原子的。在类UNIX系统上,该文件为/var/run/program-name.pid。如果它已经存在,则第二个副本将退出并显示错误。

答案 2 :(得分:0)

您可以设置一个管理实例的控制器进程:

首先,您尝试通过特定端口上的tcp / ip连接到localhost上的控制器(您的程序从现在起“命名”),如果成功,则向该控制器发送“new instance started”之类的消息。如果连接不成功,则在当前vm中启动一个新的控制器线程(并再次将消息发送到该线程)

控制器循环,等待消息,如果匹配“新实例已启动”,它会执行您描述的操作。

使用简单的ServerSocket,小型HTTP服务器或许多其他消息库可以轻松构建这样的控制器。