В документации обычно используется термин «конвейер», который состоит из одной или нескольких команд, см. определение POSIX С технической точки зрения, у вас есть две команды, два подпроцесса для оболочки (либо fork()+exec()
внешние команды, либо подоболочки)
Что касается части производителя -потребителя , конвейер может быть описан этим шаблоном, поскольку:
/proc//fd
каталог ). stdout
, а потребители читают stdin
, как если бы они были одной выполняемой командой, иначе они могут существовать друг без друга . Разница, которую я здесь вижу, заключается в том, что в отличие от Producer -Consumer на других языках, команды оболочки используют буферизацию и выводят стандартный вывод после заполнения буфера,но нет упоминания о том, что производитель -потребитель должен следовать этому правилу -только ждать, когда очередь заполнится, или отбрасывать данные (, чего конвейер не делает ).
Пакет pslist
содержит rkill
, который может убить всех потомков:
The pslist utility examines the list of current processes to find a specified process and all its descendants. [..]
When invoked as rkill, this utility does not display information about the processes, but sends them all a signal instead. If not specified on the command line, a terminate (SIGTERM) signal is sent.
Вам нужно только указать pid git.
(доступно на ubuntu/arch/etc.)