Question

I am trying to get the output of dd the following way. The idea is to programmatically capture whatever dd sends to "of".

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

Using "cat /some_file" instead of "dd ..." command works as expected but I wanted this to work with dd.

What should I use for stdout, as /dev/stdout does not exist in Android?

Will this even work?

You can assume the app has root privileges.

Était-ce utile?

La solution

If the device is not too big you could dd it to a file and then cat the file to 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"}); 

good luck

--EDITED--

I've just remembered that if you omit the "of=" operand the "dd" command will write to the stdout. So your code change to:

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

I've tested it and it works.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top