Насколько я знаю, единственная причина, по которой вы получили бы сломанный канал с фоновым процессом, - это если вы закроете окно терминала, которое его запустило. Несмотря на то, что он находится в фоновом режиме, он все еще подключен к вашему терминалу по каналам к stdin и stdout. Если вы закроете, выйдете из системы или выйдете из терминала, каналы процесса прервутся, и процесс получит сигнал на завершение (думаю, SIGHUP).
Решение этого, вероятно, будет использовать nohup
. nohup перенаправляет stdin, stdout и stderr нового фонового процесса в файлы и предотвращает отправку процесса SIGHUP.
Чтобы использовать его, вы можете запустить nohup emacsclient somefile.txt &
или, если вы хотите избежать файлов nohup.out и nohup.err, которые он использует для захвата stdout и stderr, вы можете полностью избавиться от вывода nohup emacsclient somefile.txt &> /dev/null &
.
Так как вводить текст для редактирования файла становится немного громоздким, вы, вероятно, захотите вставить это в псевдоним или сценарий оболочки.