LINUX.ORG.RU

История изменений

Исправление Novascriptum, (текущая версия) :

Так, я, похоже, сам немного продвинулся в этом вопросе. Если в bash-скрипте я запускаю php-субпроцесс вот так:

echo "111" | php read.php &

(здесь, похоже, и происходит инициализация пайпа fd/0), то всё начинает работать более похоже на то, как мне надо:

$ sh box.sh
$ php started as 4983
read stdin part: 111
test1
test2

read stdin part: 
php finished

Но остаётся непонятно:

  1. Почему терминал остаётся «висеть», как будто ждёт какого-то ввода: https://www.screencast.com/t/NkALLTyGkpC
  2. Почему строка «read stdin part» повторяется дважды, и второй раз - значением прочитанной порции STDIN является пустая строка (которой не было в переданных данных).

Исправление Novascriptum, :

Так, я, похоже, сам немного продвинулся в этом вопросе. Если в bash-скрипте я запускаю php-субпроцесс вот так:

echo "111" | php read.php &

(здесь, похоже, и происходит инициализация пайпа fd/0), то всё начинает работать более похоже на то, как мне надо:

$ sh box.sh
$ php started as 4983
read stdin part: 111
test1
test2

read stdin part: 
php finished

Но остаётся непонятно, почему терминал остаётся «висеть», как будто ждёт какого-то ввода: https://www.screencast.com/t/NkALLTyGkpC

Исходная версия Novascriptum, :

Так, я, похоже, сам немного продвинулся в этом вопросе. Если в bash-скрипте я запускаю php-субпроцесс вот так:

echo "111" | php read2.php &

(здесь, похоже, и происходит инициализация пайпа fd/0), то всё начинает работать более похоже на то, как мне надо:

$ sh box2.sh
$ php started as 4983
read stdin part: 111
test1
test2

read stdin part: 
php finished

Но остаётся непонятно, почему терминал остаётся «висеть», как будто ждёт какого-то ввода: https://www.screencast.com/t/NkALLTyGkpC