Xpoint
   [напомнить пароль]

Работа с pipe

Метки: [без меток]
[удл]
2006-07-25 15:18:47 [обр] Муравский Александр[досье]

Вопрос по передаче данных между Java и PHP.

Пытаюсь сделать вот что:
...
        String text = "test1 test2";
        Runtime runtime = java.lang.Runtime.getRuntime();
        Process process = runtime.exec("/home/rim/mmsc/convert.php");
        InputStream input = process.getInputStream();
        OutputStream output = process.getOutputStream();
// Пытаемся передать в скрипт наши данные
        output.write(text.getBytes());
// ждем завершения скрипта
        process.waitFor();
...

PHP-скрипт обрабатывает данные и возвращает их. Должен это делать.

Насколько я понял, читать данные надо из STDIN. Вот что делаю:
...
$fh = fopen('php://stdin','r');
// лог работы скрипта
fwrite($flog,"\n step 1");

$s = fgets($fh);

fwrite($flog,"\n step 2 ");

...

И вот на месте оператора fgets() происходит затык. Он не видит данных и висит, в логе есть только строка "step 1".
Каким образом можно решить эту проблему и как передать в скрипт данные? Командная строка не подходит, данных может быть много.

Уже второй день ползаю по всему инету, ничего подходящего не нашел.

спустя 40 минут [обр] Lynn «Кофеман»(2/571)[досье]
Два соображения:
Во-первых, убедитесь, что данные не застряли в буфере. Сделайте flush (или что там есть для этого в Java).
Во-вторых, fgets читает до конца строки или до конца файла. У вас в строке есть \n?
спустя 14 минут [обр] Муравский Александр[досье]
\n у меня стоял в том примере, что тестировал у себя. Даже пробовал читать просто один символ. Но проблема действительно была в буфере, output.flush помог. Большое спасибо.
Powered by POEM™ Engine Copyright © 2002-2005