Este é um diagrama do que acontece depois que alguém entra ls
no bash e o executa:
a primeira parte mostra a situação antes de ls
ser executada.Bashé um processo filho do emulador de terminaltermo xe eles têm a mesma aura, o ambiente, ao seu redor. Oxxmarcas indicam que ambosXtermeBash, já que os processos Pai e Filho possuem o conjunto idêntico de variáveis de ambiente.
a segunda parte mostra o que acontece depois de iniciar um novo processo, nomeadamente ls.
- Bash gera um processo filho, que é uma cópia exata de si mesmo, por isso o nomeeiBash_c(abreviação de Bash_copy).
- Então,Bash_cestá sendo substituído pelo processo ls.
Acho que este diagrama é direto, autoexplicativo, intuitivo e não ambíguo.
Porém, não desenhei um diagrama para (ls)
, porque não sei como seria, tenho alguns cenários diferentes de como poderia ser, mas aqui começa a parte da questão: Como seria um diagrama para (ls)
? por favor desenhe e comente.
Responder1
A hierarquia do processo for (ls)
é a mesma de for ls
, ou seja → bash → ls
, mas se você colocar uma lista de comandos entre parênteses: (ls; ls)
, então bash inicia um subshell e executa os comandos nesse subshell. A hierarquia de processos resultante é semelhante a esta: → bash → bash → ls
(os dois processos ls são executados em sequência).
Você pode visualizar isso usando cat sem argumentos em vez de ls: (cat; cat)
. O primeiro processo cat aguarda a entrada, dando a você a chance de ver o que está acontecendo usando pstree
ou top
em outro terminal.