оболочка, контроль работы для получения конца трубы - PullRequest
0 голосов
/ 05 октября 2018

Я не понял, почему я не могу запустить какой-то процесс (в данном примере "cat") в фоновом режиме, а затем сделать его приоритетным:

$ dash
$ f() { cat </dev/stdin > /dev/stdout &  sleep 1; fg ; }
$ sleep 2 | f
dash: 1: fg: job (null) not created under job control
$ set -m 
$ sleep 2 | f
dash: 1: fg: job (null) not created under job control
$ f() { set -m; cat </dev/stdin > /dev/stdout &  sleep 1; fg ; }
$ sleep 2 | f
dash: 5: fg: job (null) not created under job control

Почему каждый раз, когда я получаю ошибкусообщение?

Когда-то у меня не было таких сообщений при запуске функции "f" без конвейера:

$ set +m
$ f
cat 0</dev/stdin 1>/dev/stdout
^C
$ set -m
$ f
cat 0</dev/stdin 1>/dev/stdout
^C
...