gpt4 book ai didi

c# - 尝试使用 su 执行命令时出现 SyncFailedException

转载 作者:行者123 更新时间:2023-11-30 02:50:12 28 4
gpt4 key购买 nike

我正在尝试使用 su 执行命令并查看一些问题这里,
我决定尝试以下方法:

var command = "su -c 'touch /mnt/extsd/somefile'"; //Could be any command
using (var process = Java.Lang.Runtime.GetRuntime().Exec(command)) { }

在这种情况下,我试图通过将命令直接传递给 su 来执行命令,
在我的目标设备上,这意味着我必须传递 -c 参数,其他设备不需要这个。

虽然这不会引发任何类型的异常(不在应用程序中,不在系统中),
它实际上也没有做任何事情。它只是被忽略了。

var command = "touch /mnt/extsd/somefile";
using (var su = Java.Lang.Runtime.GetRuntime())
using (var process = su.Exec("su"))
using (var writer = new StreamWriter(process.OutputStream))
{
writer.WriteLine(command);
}

无论实际命令是什么,结果总是一样的:

06-20 22:46:02.614 E/su-binary(27808): ----su-----
06-20 22:46:02.794 W/System.err(22894): java.io.SyncFailedException: fsync failed: EINVAL (Invalid argument)
06-20 22:46:02.794 W/System.err(22894): at java.io.FileDescriptor.sync(FileDescriptor.java:77)
06-20 22:46:02.804 W/System.err(22894): at java.io.FileOutputStream.flush(FileOutputStream.java:194)
06-20 22:46:02.804 W/System.err(22894): at dalvik.system.NativeStart.run(Native Method)
06-20 22:46:02.804 W/System.err(22894): Caused by: libcore.io.ErrnoException: fsync failed: EINVAL (Invalid argument)
06-20 22:46:02.804 D/TouchD ( 1471): Entering CheckVIDinlsusb()
06-20 22:46:02.814 D/TouchD ( 1471): Command busybox lsusb | grep 0eef output to /dev/null failed.

是什么导致了这个问题,有什么办法可以解决这个问题吗?

最佳答案

编辑:删除了原来的错误答案

看来您需要像这样读取过程的输出:

var command = "touch '/mnt/extsd/someFile'";

using (var process = new JL.ProcessBuilder().Command("su", "-c", command)
.RedirectErrorStream(true)
.Start())
{
var buffer = new byte[256];
var read = 0;

do
{
read = process.InputStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(ASCIIEncoding.ASCII.GetString(buffer, 0, read));
} while (read > 0);
}

第二个命令(本例中为触摸)的参数用引号引起来很重要。为了避免 namespace 冲突,添加了以下 using 语句:

using JL=Java.Lang;

引用:http://developer.android.com/reference/java/lang/Process.html

关于c# - 尝试使用 su 执行命令时出现 SyncFailedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com