我有一些在我的 c# 控制台应用程序中使用的 jar 文件(通过 System.Diagnostics.Process 启动它们)并根据我的目的读取控制台输出。
现在我需要将此控制台应用程序更改为 Windows 服务。
m_process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "java.exe",
Arguments = arguments,
UseShellExecute = false,
LoadUserProfile = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
}
};
m_process.Start();
m_process.BeginOutputReadLine();
m_process.BeginErrorReadLine();
m_process.WaitForExit();
m_process.Close();
m_process.Dispose();
m_process.OutputDataReceived += ProcessOutputDataReceived;
m_process.ErrorDataReceived += ProcessErrorDataReceived;
jar 文件通过控制台输出为我提供满足我需要的信息。它可以在控制台应用程序中运行,但服务不会启动任何控制台,因此我无法读取输出。
我了解到我无法在 Windows 服务中启动控制台。但我正在寻找任何其他方式来启动我的 jar 文件并从中读取输出。
最佳答案
Windows 服务是一项后台作业。它没有控制台。
请记住,该服务在 Windows 启动后立即运行。这意味着它甚至在用户登录之前就运行。甚至没有用户可以向其显示控制台,即使您神奇地能够打开控制台。
在服务器上,根本不连接监视器是很常见的。谁会看到你的输出?
解决方案
如果您想从后台程序生成输出,请将其写入日志文件。
关于java - 如何启动控制台并从 Windows 服务中读取输出或模拟它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32122948/