gpt4 book ai didi

java - 如何使用 Powershell 退出代码重新启动我关闭的客户端/服务器对?

转载 作者:行者123 更新时间:2023-12-01 10:14:34 24 4
gpt4 key购买 nike

我有一个简单的 Java 客户端-服务器应用程序 ( code linked on previous Stack question here ),我可以将其与以下 Powershell 代码一起运行:

Start-Process java "-cp .;.\lib\commons-io-2.4.jar  FixedMessageSequenceServer"
Start-Sleep -Seconds 1
$JavaClient = Start-Process java "-cp .;.\lib\commons-io-2.4.jar FixedMessageSequenceClient -Wait -PassThru"

这很好用。但是,我想添加 Powershell 代码或 Java 代码,如果我们强制关闭(通过 CTRL-C)应用程序(从服务器端),它们将重新启动上述 Powershell 代码。

我认为我应该是苹果使用这段代码:

if($JavaClient.ExitCode)
{
# exit code is non-zero, better retry
Start-Process java "-cp .;.\lib\commons-io-2.4.jar FixedMessageSequenceServer" -Wait
Start-Process java "-cp .;.\lib\commons-io-2.4.jar FixedMessageSequenceClient -Wait -PassThru"
}

但是,当我运行它时,这不会执行任何操作。我是否需要附加一些 Java ProcessBuilder 代码来实现所需的功能?我们需要对 $JavaClient.ExitCode 进行处理吗?

谢谢

最佳答案

如果您仅对单个 if 语句进行评估,那么即使该代码确实有效,您也有一个很小的窗口可以重新启动它。

我建议您创建一个小型轮询脚本,每隔 10 秒、1 分钟等检查某个进程的状态,如果它没有运行,可以通过这种方式启动它。如果 java 客户端应始终运行,则可以将其嵌套在无限循环中,或者如果脚本应以一致的间隔/触发器运行(即每小时的顶部等),则可以使用计划任务来启动脚本。 )

尝试这样的事情:

if(![bool](get-process java -ErrorAction SilentlyContinue)){
start-process java "-cp .;.\lib\commons-io-2.4.jar FixedMessageSequenceClient -Wait -PassThru"
}

关于java - 如何使用 Powershell 退出代码重新启动我关闭的客户端/服务器对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35974916/

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