public static string?Exec(string command) { var runtime = Java.Lang.Runtime.GetRuntime(); if (runtime == null) { throw new NullReferenceException("Java.Lang.Runtime.GetRuntime"); } try { var command2 = new Java.Lang.String(command); using var process = runtime.Exec("sh"); if (process != null) { using var bufferedOutputStream = new Java.IO.BufferedOutputStream(process.OutputStream); using var bufferedInputStream = new Java.IO.BufferedInputStream(process.InputStream); bufferedOutputStream.Write(command2.GetBytes()); bufferedOutputStream.Write('\n'); bufferedOutputStream.Flush(); bufferedOutputStream.Close(); process.WaitFor(); var outputStr = GetStrFromBufferInputSteam(bufferedInputStream); return(outputStr); } } catch (Java.Lang.Throwable t) { t.PrintStackTraceWhenDebug(); } return(null); }
static string?GetStrFromBufferInputSteam(Java.IO.BufferedInputStream bufferedInputStream) { if (bufferedInputStream == null) { return(string.Empty); } var BUFFER_SIZE = 512; var buffer = new byte[BUFFER_SIZE]; try { var result = new StringBuilder(); while (true) { int read = bufferedInputStream.Read(buffer); if (read > 0) { result.Append(new Java.Lang.String(buffer, 0, read).ToString()); } if (read < BUFFER_SIZE) { break; } } return(result.ToString()); } catch (Java.Lang.Throwable t) { t.PrintStackTraceWhenDebug(); return(null); } }