问题描述
我想写一个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,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;
}