如何从 C# 服务终止 Java 应用程序

use*_*381 2 c# java windows-services restart batch-file

我正在尝试开发一个日志文件看门狗 C# 服务来重新启动 Java 应用程序。

此 Java 应用程序运行一个特殊的通信程序并将收集的数据写入日志文件。它目前正在使用批处理文件脚本启动。

我希望我的 C# 服务监视日志文件是否使用新数据更新。如果没有获取新数据,我想重新启动 Java 应用程序。

我在网上找到了关于在 C# 应用程序中调用批处理脚本并检查文件何时被修改的材料,但我想知道它们是否是一种使用 C# 应用程序终止当前运行的 Java 程序的方法?Java 程序名称是 javaw.exe,但它们是在本机上运行的其他 Java 程序,因此它不是唯一的。有没有人知道如何做到这一点?

Moi*_*oiz 5

jps -v 是一个 Java 命令,它详细说明了 java 正在使用的进程。如果您通过 c# 进行此调用并将信息传递到字符串中,则可以对此进行排序并准确确定要终止的进程。

您可以像这样接收输出:

        ProcessStartInfo psi = new ProcessStartInfo("jps", "-v");
        psi.RedirectStandardOutput = true;
        psi.UseShellExecute = false;
        Process p = new Process();
        p.StartInfo = psi;
        p.Start();
        string[] output = p.StandardOutput.ReadToEnd().Split("\n".ToCharArray());
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以轻松解析出您正在运行的 Java 进程的进程 ID 和名称。