как проанализировать вывод php proc_open () перед вводом - PullRequest
0 голосов
/ 25 марта 2020

У меня есть простой тестовый скрипт "askforname":

#/bin/bash
echo "please enter your name"
read varname
echo "Hello $varname"

Я могу использовать php proc_open (), чтобы использовать эту команду:

$descriptors = array(
    0 => array("pipe", "r"),  // STDIN
    1 => array("pipe", "w"),  // STDOUT
    2 => array("pipe", "w")   // STDERR
);

$proc = proc_open("askforname", $descriptors, $pipes);
fwrite($pipes[0], "Anna");
fclose($pipes[0]);

$stdout = stream_get_contents($pipes[1]);
$stderr = stream_get_contents($pipes[2]);

fclose($pipes[1]);
fclose($pipes[2]);

$exitCode = proc_close($proc);

echo nl2br($stdout);

Но если я могу только прочитайте подсказку («введите ваше имя») после того, как канал уже закрыт через fclose ().

Но я хотел бы прочитать вывод, затем проанализировать его и записать ввод, например:

$proc = proc_open("askforname", $descriptors, $pipes);

if (stream_get_contents($pipes[1]) == "please enter your name")
  fwrite($pipes[0], "Anna");
else 
  //dowhatever else

fclose($pipes[0]);    

Разве это невозможно с помощью proc_open () или любой другой команды в php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...