Вам не нужно создавать фоновый процесс для перенаправления данных. Вы можете сделать следующее, что создаст лог-файл actions.log
, содержащий каждое ваше действие.
#! /bin/bash
while read -p "action " act; do
echo $act
done > actions.log
exit 0
Для вас это будет что-то вроде:
$ a.out > test.log
Если вы это сделаете хотите иметь фоновый процесс, но нужно ввести данные:
$ function inter_child {
./inter.sh <<-EOF
a
b
c
d
EOF
sleep 10
}
$ inter_child &
$ wait
$ cat actions.log
a
b
c
d
Если это не отвечает на ваш вопрос, пожалуйста, уточните c почему вам нужно создать дочерний процесс и что такое a.out
ожидает. Надеюсь, это поможет!
РЕДАКТИРОВАНИЕ:
stdout и stderr - это два разных перенаправления.
Запись stderr в файл 2>
: $ ./a.out 2> error.log
Перенаправление stderr в stdout 2>&1
: $ ./a.out > log.log 2>&1