c++ - jar 服务器停止触发 shutdown.exe
问题描述
我想编写一个 c++ 代码来启动一个 java 服务器(文件名为 server.jar),当服务器停止时我想运行 shutdown.exe 我查找了如何启动 server.jar 但我找不到关于如何检测它停止的任何可理解的
我想要实现的是:
- 运行脚本 --> 服务器启动并运行一段时间
- 服务器收到来自客户端的停止命令
- 服务器停止 --> 脚本运行 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, NULL, TRUE, 0, NULL, NULL, &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", cmdline, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) {
}
WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
return 0;
}
推荐阅读
- python - Filtering dataframe rows based on count
- asp.net - 日期时区和夏令时
- python-3.x - 如何在回文中附加和加入中心元素(当不止一次出现时)
- java - 未强制执行 Java 安全策略
- swift - CATransaction 动画问题
- javascript - 基于路由的动态路由和组件创建
- hibernate - 将 Wildfly 15 中的 Hibernate 降级到 4.x
- c++ - 为什么没有显示 QGraphicsView
- python - 如何获取列表中的csv所有数字
- jakarta-ee - WebSphere Liberty 无法为 JAX-RS api 自动生成 swagger