Управление внешней программой или чтение при открытом дескрипторе

Winner

Новичок
Управление внешней программой или чтение при открытом дескрипторе

Здравствуйте уважаемые. Пожалуйста помогите разобраться в управлении запущенной внешней программы. Для примера взят FTP клиент. Если записываемый дескриптор не закрывать после записи в него, то читаемый дескриптор не получается прочитать. Это не позволяет управление программой в зависимости от полученного от нее вывода. Рабочий вариант в коде помечен РАБОТАЕТ.
Может проблему управления запущенной внешней программы можно решить другим способом? Заранее благодарю за помощь.
PHP:
<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin это канал, из которого потомок будет читать
   1 => array("pipe", "w"),  // stdout это канал, в который потомок будет записывать
   2 => array("file", "/tmp/errors.txt", "a"), // stderr это файл для записи
);

$process = proc_open("ftp", $descriptorspec, $pipes);
if (is_resource($process)) {
    // $pipes выглядит теперь примерно так:
    // 0 => записываемый дескриптор, соединённый с дочерним stdin
    // 1 => читаемый дескриптор, соединённый с дочерним stdout
    // вывод ошибки будет присоединён к /tmp/errors.txt

    fwrite($pipes[0], "open ftp.host.ru\n");
    //fclose($pipes[0]); // РАБОТАЕТ

    stream_set_blocking($pipes[1], FALSE);

    //while(!feof($pipes[1])) { $viewOutput .=fgets($pipes[1]); } // РАБОТАЕТ

      while($getLine =fread($pipes[1], 2)) { $viewOutput .=$getLine; } // НЕ РАБОТАЕТ
	
	
    fclose($pipes[0]); // НЕ РАБОТАЕТ
    fclose($pipes[1]);
	
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}
?>
-~{}~ 06.11.06 14:42:

Тишина... все усиленно готовятся к демонстрации.
 

whirlwind

TDD infected, paranoid
хм... попробуй прежде чем писать, прочитать приглашение командной строки ftp.
 

Winner

Новичок
Перед писанием прочитал приглашение командной строки ftp. Не помогло...:D
 
Сверху