Я пытаюсь добиться следующего:
из скрипта fish , откройте программу чтения PDF в качестве фонового задания.Как только он открывается, запускается другой процесс fish
(который запускает бесконечный цикл while
), также в качестве фонового задания.
Затем откройте редактор (neovim
) и дайте ему возможность взять управлениеработающего терминала.После завершения neovim
также приостановите предыдущие 2 фоновых задания (mupdf
и другой процесс fish
).
Моя текущая попытка выглядит следующим образом:
mupdf $pdfpath &
set pid_mupdf $last_pid
fish -c "while inotifywait ...; [logic to rebuild the pdf file..]; end" &
set pid_sub $last_pid
nvim $mdpath && kill -2 $pid_mudf $pid_sub
Сначала я открываю mupdf в качестве фонового задания и сохраняю его PID
в переменной.Затем я порождаю другой процесс с рыбой, также в качестве фоновой работы, и также сохраняю PID
.
Далее я запускаю nvim
(но не как фоновое задание, поскольку я намерен фактически управлять им), и после того, как пользователь завершает его, я изящно kill
предыдущие 2 фоновых задания.
Однако это не работает должным образом.
mupdf
и второй процесс fish
успешно открывается, как и nvim
, но он быстро закрывается примерно через полсекунды,после чего я получаю в окне управляющего терминала следующее: image (bote
- это просто имя скрипта, из которого происходят строки выше)
2 фоновых процесса продолжают работать послеэто и я должен убить их вручную.
Я понимаю, что скрипт отправляется SIGHUP
, потому что управляющий терминал теперь выполняет другое приложение (neovim
), но почему после этого закрывается neovim
?
Я также пытался disown
запускать фоновые процессы после их запуска, но это не помогло.
Как мне решить эту проблему?