【发布时间】:2020-06-25 07:08:31
【问题描述】:
我想通过 C# 程序使用ADB 命令从连接到USB 的device 接收信息,然后刷新输出。
Process process = new Process();
process.StartInfo.FileName = "adb.exe";
process.StartInfo.Arguments = "logcat -d -b main -v raw -s Command:I"; // get data in Log.I() with name == "Command"
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
string output;
do {
process.StandardInput.WriteLine("logcat -d -b main -v raw -s Command:I");
output = process.StandardOutput.ReadToEnd();
} while (output.Length < 1);
Console.WriteLine(output);
process.StandardInput.WriteLine("logcat -c"); // flush logcat
process.WaitForExit();
这样做我明白程序一直在执行adb logcat -d -b main -v raw -s Command:I,难道没有办法一次调用命令并等待输出吗?
我可以在 Windows 提示符下使用:
adb shell 'logcat -b main -v raw -s UNIQUE_TAG:I | (read -n 1 && kill -2 $((BASHPID-1)))'
但这在 C# 中可行吗? 输出似乎也没有被刷新
【问题讨论】:
标签: c# android windows command-line adb