如何在java中杀死名称服务器进程

Posted

技术标签:

【中文标题】如何在java中杀死名称服务器进程【英文标题】:How to kill the nameserver process in java 【发布时间】:2009-10-18 22:06:49 【问题描述】:

我使用 IDL 文件构建了一个客户端服务器应用程序,用于通过网络进行客户端服务器通信。客户端和服务器程序都在 java 中。当用户进入退出时,服务器和客户端都退出。但是我无法终止名称服务器进程。 我使用命令

启动了名称服务器

tnameserv -ORBInitialPort 1050

如何在客户端或服务器程序(在 java 中)中终止名称服务器?

【问题讨论】:

您无法使用基于 java 的方法停止标准名称服务器 【参考方案1】:

当你运行 tnameserv 时,你必须通过 kill 命令 (linux,unix) 或 Ctrl+C (windows) 来杀死它

如果在 linux/unix 上,这应该可以解决问题:

killall tnameserv

见http://java.sun.com/j2se/1.4.2/docs/guide/idl/tnameserv.html#stoppingnameserver

编辑:

如果您想从 withing java 中发出 killall 命令,请使用:

runtime.exec("killall tnameserv");

见http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

想法:

从我们的程序外部启动 tnameserv,然后尝试从内部终止它似乎很奇怪。 (权限问题、其他用户使用 nameserv 等)根据您的需要,为什么不从您的应用程序中启动 tnameserv?

【讨论】:

来自 linux 命令行。运行“tnameserv -ORBInitialPort 1050”命令的地方。 但问题是如何杀死客户端或服务器应用程序(java)! 可以使用 java 内部的 runtime.exec() 来运行 killall 命令。但是,现在您的程序仅适用于具有 killall 的系统(这可能没问题)。我将编辑我的答案。

以上是关于如何在java中杀死名称服务器进程的主要内容,如果未能解决你的问题,请参考以下文章

如何杀死所有匹配名称的进程?

AIX - 如何使用进程名称而不是 PID 杀死

如何使用应用程序名称而不是进程名称杀死应用程序

如何防止 Spring Boot / Tomcat (Java8) 进程被 OOM 杀死?

如何使用给定的部分名称杀死所有进程?

如何在Windows下查看JAVA端口占用明细