Javaアプリケーション:
public class JavaApplication {
public static void main(String[] args) {
System.out.println("Java application outputs something into stdout");
System.err.println("Java application outputs something into stderr");
}
}
C#アプリケーション
using System;
using System.Diagnostics;
namespace CaptureProcessStdOutErr
{
public class Program
{
public static void Main(string[] args)
{
var startInfo = new ProcessStartInfo("java", "JavaApplication") // proper path to java, main java class, classpath, jvm parameters, etc must be specified or use java -jar jarName.jar if packaged into a single jar
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false
};
var process = Process.Start(startInfo);
process.WaitForExit();
Console.WriteLine("Captured stderr from java process:");
Console.WriteLine(process.StandardError.ReadToEnd());
Console.WriteLine();
Console.WriteLine("Captured stdout from java process");
Console.WriteLine(process.StandardOutput.ReadToEnd());
}
}
}
これはのjava.exeはPATH内にあるとみなされます。
コンパイルJavaApplication、次のC#アプリケーション(CaptureProcessStdOutErr.exe)
実行CaptureProcessStdOutErr.exeにJavaApplication.classファイルを置く
出力:
Captured stderr from java process:
Java application outputs something into stderr
Captured stdout from java process
Java application outputs something into stdout
https://msdn.microsoft.com /en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput%28v=vs.110%29.aspxには例があります –
lashaneは何を言ったのですか...名前付きパイプ、TCP/IP、ファイルシステム、メールスロットなど – Tdorno
@Lashaneリダイレクト標準出力は私が期待している結果をもたらさない。それは動作しません。 – halpme142