【问题标题】:Printing a file to a process stdout, using dd (Android)使用 dd (Android) 将文件打印到进程标准输出
【发布时间】:2012-09-28 16:54:29
【问题描述】:

我正在尝试通过以下方式获取 dd 的输出。 这个想法是以编程方式捕获 dd 发送到“of”的任何内容。

//Process p;
// ...
p = Runtime.getRuntime().exec(new String[]{"su", "-c", "dd if=/dev/something of=stdout bs=1024"});

按预期使用“cat /some_file”而不是“dd ...”命令有效,但我希望它与 dd 一起使用。

我应该为标准输出使用什么,因为 /dev/stdout 在 Android 中不存在?

这会起作用吗?

您可以假设该应用具有 root 权限。

【问题讨论】:

  • 如果您跳过of 参数,我认为您可以将其发送给stdoutss64.com/bash/dd.html
  • 嗯,我认为这可能行得通。但我也需要它不要在最后打印其状态消息。文档提到了 `status=noxfer' 但 Android 的 dd 没有 'status' 选项。
  • 状态消息为我打印到STDERR。至少在控制台上附加“2>/dev/null”可以消除该消息。
  • Doing "dd if=/dev/something bs=1024 2>/dev/null" 回答了我的问题。如果你用它回答我会接受它。

标签: android shell stdout dd


【解决方案1】:

如果设备不是太大,您可以将其添加到文件中,然后将文件归类为 stout ...

//Process p; 
// ... 
p = Runtime.getRuntime().exec(new String[]{"su", "-c", "dd if=/dev/something of=/dev/mnt/sdcard/myfile bs=1024"}); 
p = Runtime.getRuntime().exec(new String[]{"cat", "/dev/mnt/sdcard/myfile"}); 

祝你好运

--已编辑--

我刚刚记得,如果您省略“of=”操作数,“dd”命令将写入标准输出。 所以你的代码改为:

//Process p;  
// ...  
p = Runtime.getRuntime().exec(new String[]{"su", "-c", "dd if=/dev/something bs=1024"});

我已经测试过了,它可以工作。

【讨论】:

  • 对不起,文件很大,我不希望它猫到文件中。
猜你喜欢
  • 2015-08-31
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2013-05-01
  • 2015-04-08
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多