Вывод одной команды передается на другой; как закрыть оба?

Я называю Qt Assistant, как предлагается в stackoverflow :

nc -lkU ~/.assistantfifo | assistant -enableRemoteControl & 

Окно Qt Assistant открывается, и если я вызываю jobs , он возвращает:

 [1] + running nc -lkU ~/.assistantfifo | assistant -enableRemoteControl 

Затем я закрываю Qt Assistant (просто нажав «x»). Теперь jobs возвращаются:

 [1] + running nc -lkU ~/.assistantfifo | done assistant -enableRemoteControl 

Итак, nc продолжает работать, и я должен ввести killall nc .

Как сделать nc закончить тоже, когда я закрываю Qt Assistant? Или, наверное, я должен сделать это как-то иначе?

  • Что происходит с фоновыми заданиями после выхода из оболочки?
  • Отправляет SIGKILL в процесс с заменой, который отменит его до убийства?
  • что у киллеров процесса есть linux?
  • В AwesomeWM используется `c: kill ()` так же мягко, как щелчок на красном кресте в другом оконном менеджере?
  • Декодировать флаги для команды Kill
  • Ctrl + C завершение процесса без убийства терминала
  • Как я могу быстро убить процесс CPU / IO?
  • Процесс непрерывного резервного копирования на Solaris
  • 2 Solutions collect form web for “Вывод одной команды передается на другой; как закрыть оба?”

    Команда, которую вы запускаете ( nc aka netcat ), будет прослушивать ввод при запуске с флагом -l . Обычно netcat в режиме прослушивания закрывается, когда он получает символ конца файла, но флаг -k предотвращает это. Другими словами, netcat не будет закрываться, пока вы не убьете его из-за того, как вы вызывали команду.

    См. Справочную страницу для получения дополнительной информации.

    Если вы хотите отделить второй процесс, вам также необходимо сгруппировать их с помощью

     $ ( nc -lkU ~/.assistantfifo | assistant -enableRemoteControl ) & 

    иначе это не сработает. Скобки необходимы для отсоединения обоих процессов.

    Linux и Unix - лучшая ОС в мире.