Пример #1
0
            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);
            }
Пример #2
0
            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);
                }
            }