jar 服务器停止触发 shutdown.exe

问题描述

我想写一个c++代码来启动一个java服务器(文件名是server.jar),当服务器停止时我想运行shutdown.exe 我查找了如何启动 server.jar,但在如何检测它停止方面找不到任何可理解的内容

我想要实现的是:

  1. 运行脚本 --> 服务器启动并运行一段时间
  2. 服务器收到来自客户端的停止命令
  3. 服务器停止 --> 脚本运行 shutdown.exe

解决方法

我编写了代码,所以这里是:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <windows.h>
#include <stdlib.h>

int main() {
STARTUPINFO info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
wchar_t cmdline[] = L" -jar server.jar";
//wchar_t path[] = L"C:\\Program Files\\Java\\jre*\\bin\\javaw.exe";

char* pathc= std::getenv("_JAVAW");
wchar_t* path;
path = (wchar_t*)malloc(sizeof(wchar_t) * strlen(pathc));
mbstowcs(path,pathc,strlen(pathc)+1);

if (CreateProcess( path,cmdline,NULL,TRUE,&info,&processInfo))
{
    std::cout << "running" << std::endl;
    WaitForSingleObject(processInfo.hProcess,INFINITE);
    wchar_t cmdline[] = L" -s -t 60";
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
    if (CreateProcess(L"C:\\WINDOWS\\system32\\shutdown.exe",&processInfo)) {

    }
    WaitForSingleObject(processInfo.hProcess,INFINITE);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
}
return 0;

}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...