Когда мы запускаем dd
без каких-либо параметров, по умолчанию он принимает ввод со стандартного ввода, а при обнаружении EOF (control + D)
он снова выталкивает все, что было введено, на стандартный вывод.
Вид вот так
[ec2-user@ip ~]$ dd
This is line 1
This is line 2
This is line 1
This is line 2
0+2 records in
0+1 records out
30 bytes (30 B) copied, 9.7963 s, 0.0 kB/s
[ec2-user@ip ~]$
Я пытаюсь смоделировать то же самое в коде java.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws IOException {
Process p = Runtime.getRuntime().exec("dd ");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String str = br.readLine();
while (str != null) {
System.out.println(str);
str = br.readLine();
}
}
}
пока что я могу писать что-то в стандартный ввод, но я этого не делаю. я не знаю, как отправить EOF (я видел сообщения о том, как отправить EOF из java, но здесь ничего не работает).
Кроме того, я не знаю, как получить вывод из dd
в стандартный вывод (т.е. с использованием java).