|
|
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
День добрый! как прикрутить piped стримы к потокам ввода вывода внешнего процесса (Process.getOutputStream() - > PipedInputStream) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:12:45 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
Зачем? http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html авторHere is an example that starts a process with a modified working directory and environment, and redirects standard output and error to be appended to a log file: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Даже если у вас Java 6 - скачайте исходники и скопируйте себе в проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:17:16 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
Напрямую никак. Только ручным считыванием из Process.getOutputStream() и перекладыванием в свой InputStream. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:18:38 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
svenomНапрямую никак. Только ручным считыванием из Process.getOutputStream() и перекладыванием в свой InputStream. Что ты этим имел ввиду? Piped Stream-ы как раз и нужны для перекачки в паралелльном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:22:18 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
BlazkowiczsvenomНапрямую никак. Только ручным считыванием из Process.getOutputStream() и перекладыванием в свой InputStream. Что ты этим имел ввиду? Piped Stream-ы как раз и нужны для перекачки в паралелльном потоке.В смысле, что Piped стримы являются самыми нижними в иерархими стримов, они не могут декорировать другие стримы. Потому и отсутствуют соответствующие конструкторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2012, 13:24:20 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Судя по ответу svenom прикрутить Piped'ы ко внешнему процессу (вводу, выводу) не удастся (я так тоже подумал именно про конструкторы), тогда как же все-таки избежать блокировки (блокирующие операции ввода вывода), Ваш ответ на другом форуме http://rsdn.ru/forum/java/2147887.1.aspx ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 17:43:44 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно про какую болкировку вы говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 18:00:51 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
svenom, Ну вот тот самый пример http://rsdn.ru/forum/java/2145860.aspx: public class proc { static BufferedReader in; static InputStream ins; static PrintWriter out; public static void main(String[] args) throws IOException, InterruptedException { String path = "c:\\WINDOWS\\system32\\cmd.exe"; Runtime r = Runtime.getRuntime(); Process proc = r.exec(path); ins = proc.getInputStream(); in = new BufferedReader(new InputStreamReader(ins)); out = new PrintWriter(new OutputStreamWriter(proc.getOutputStream())); out.println("dir"); out.flush(); // Program hangs if one of these is executed here >> //System.out.println(getResult1()); //System.out.println(getResult2()); out.println("exit"); out.flush(); // Another problem: program also hangs here... >> //int code = proc.waitFor(); System.out.println(getResult1()); //System.out.println("Exit this " + code); proc.destroy(); } // Method 1 public static String getResult1() throws IOException { String res = ""; // Method 1 int b; while ((b = ins.read()) != -1) { res += (char)b; } return res; } // Method 2 public static String getResult2() throws IOException { String line, res = ""; while ((line = in.readLine()) != null) { res += line + "\n"; } return res; } } т.е. блокируется вычитка пока есть куда писать, Blazkowicz сказал разместить в различных Thread'aх, я разместил, не помогло http://www.sql.ru/forum/actualthread.aspx?tid=909263 ... потом начал читать ветку на rsdn: http://rsdn.ru/forum/java/2145860.aspx и оттуда уже на PipedStream'ы свалился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 18:13:18 |
|
||
|
PipedInputStream и другие стримы
|
|||
|---|---|---|---|
|
#18+
svenom, Пардон всем, мой косяк , блокировки действительно можно избежать размещая чтение-запись в различных потоках.... Косяк был в неверных записываемых командах (отправляемых в stdin внешнего процесса psql).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 22:37:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37612885&tid=2132844]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 346ms |
| total: | 481ms |

| 0 / 0 |
