После прочтения explanations of how the exec builtin works in bash, я понимаю, что его основной функцией является замена текущего процесса без наложения. Он также, по-видимому, используется для перенаправления ввода-вывода и закрытия дескрипторов файлов в текущем процессе, что меня смущает. Это какая-то не связанная дополнительная вещь exec
? Можно ли это понимать в контексте «замены текущего процесса»? И как это работает в сочетании с замещением процесса, например. exec 3< <(my program)
?Понимание exec в bash
2
A
ответ
6
Вот что делает exec
:
- Установите все переназначения в текущем процессе.
- Это сочетание
open
,dup2
иclose
системных вызовов для большинства операций, как> foo
pipe
+fork
+/dev/fd/*
используется для процесса substition- Временные файлы создаются и открыты для здесь-документов и здесь- строки
- Это сочетание
- Заменить образ процесса (используя
execve
) с указанной программой, , если они есть
Если вы не укажете программу для запуска, шаг 2 просто пропущен, и поэтому все переадресации влияют на остальную часть скрипта.
<(Process substitution)
работ pipe
+ fork
+ /dev/fd/
:
- Создать трубу в обычном режиме.
- Скопируйте его в FD 63 или где-нибудь его не будет
- Вилка и запуск программы, которая читает/записывает в трубу.
- Замените замену процесса на
/dev/fd/63
, специальный файл, который будет возвращать FD 63 при открытии. (попробуйтеecho <(ls)
).
С этого момента он работает так же, как перенаправление из любого другого файла. Вы открываете /dev/fd/63
для чтения на FD 3, а затем вы заканчиваете чтение из трубы. exec
поэтому не нужно ничего делать особый.
Смежные вопросы
- 1. понимание bash exec {logout}?
- 2. Понимание! # И $ @ в bash
- 3. Понимание фрагментов «bash»
- 4. понимание цели Exec в мавена
- 5. Bash Script -exec синтаксис
- 6. fork и exec в bash
- 7. Понимание причины exec ($ my_command) hang
- 8. exec не bash процесс с другим bash
- 9. Понимание Bash Scripting
- 10. Понимание короткого замыкания Bash
- 11. Понимание `history` для bash
- 12. Понимание команды sort в BASH
- 13. Понимание работы sed в bash
- 14. Понимание bash * String * сравнение
- 15. Bash Script Понимание
- 16. Понимание расширения скобы bash
- 17. Bash - find exec return value
- 18. Найти сценарии -exec и Bash
- 19. node.js exec и bash script
- 20. Bash exec отсутствует конечное значение
- 21. Bash: find -exec от функции
- 22. exec bash file with putty
- 23. разница между «exec» и «exit» в bash
- 24. exec строка из файла в bash
- 25. использовать docker exec в скрипте bash
- 26. Python 3 Словарь Понимание ошибки Exec
- 27. Понимание части сценария Linux Bash
- 28. Понимание использования подстановки команд в bash
- 29. bash: exec $ var> & 1 не работает
- 30. Вызов R с помощью команды bash exec
@Kvass: Если вы заинтересованы в том, как работает подстановка процесса под обложками, файл исходного кода является 'subst.c', а функция' process_substitute', есть немало комментариев. Строка 5049 здесь: http://code.metager.de/source/xref/gnu/bash/subst.c – cdarke