gpt4 book ai didi

java - 如何以与平台无关的方式终止由ant exec启动的java进程?

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:26 25 4
gpt4 key购买 nike

我有以下 build.xml 代码,它使用 exec 在 Windows 和 mac 上启动一个 java 进程(取决于您运行此 build.xml 的操作系统),我想通过 java 杀死这些子进程(如果当我杀死执行此 build.xml 的父进程时它们被杀死,那就太好了)?

注意:antRunAsync.js 用于运行 exe 文件,antRunAsync.sh 用于运行 jar 文件。

Build.xml>>>

<target name="runscript.windows">
<echo>This is a Windows machine.</echo>
<exec executable="cscript.exe">
<arg value="//NoLogo" />
<arg value="antRunAsync.js" /> <!-- this script -->
<arg value="${projectName}.exe" />
<arg line="${savedTestName}"/>
</exec>

</target>

<target name="runscript.mac">
<echo>This is an Mac machine.</echo>
<exec dir="." executable="/bin/sh">
<arg value="./antRunAsync.sh" />
<arg value="${projectName}.jar" />
<arg line="${savedTestName}"/>
</exec>
</target>

antRunAsync.js >>>

var WshShell = WScript.CreateObject("WScript.Shell");
var exeStr = "%comspec% /c";
var arg = "";
var windowStyle = 0;
var WshProcessEnv = WshShell.Environment("PROCESS");
var windowTitle = WshProcessEnv("ANTRUN_TITLE");
var outputFile = WshProcessEnv("ANTRUN_OUTPUT");
var OS = WshProcessEnv("OS");
var isWindowsNT = (OS == "Windows_NT");

// Loop through arguments quoting ones with spaces
for (var i = 0; i < WScript.Arguments.count(); i++) {
arg = WScript.Arguments(i);
if (arg.indexOf(' ') > 0)
exeStr += " \"" + arg + "\"";
else
exeStr += " " + arg;
}

WScript.Echo(exeStr);

var stdin = WshShell.Exec(exeStr).StdOut;
var stdout = WScript.StdOut;

while (!stdin.AtEndOfStream) {
var str = stdin.ReadLine();
stdout.WriteLine("Line " + (stdin.Line - 1) + ": " + str);
}

antRunAsync.sh >>>

echo $1
echo $2
java -jar $1 $2 2>&1 | tee log.txt

最佳答案

JMX 是一种选项,您可以使用它以独立于平台的方式终止 java 进程。请查看下面的链接。

Is it possible to programmatically close a Java process through JMX

如果您正在寻找一个选项,杀死 ant 进程会导致 java 进程终止,我不确定。

关于java - 如何以与平台无关的方式终止由ant exec启动的java进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com