Mi sembra di fraintendere la regola di Bash per la creazione di una subshell. Ho pensato che le parentesi crea sempre una subshell, che funziona come un suo processo.
Tuttavia, questo non sembra essere il caso. Nel frammento di codice A (sotto), il secondo sleepcomando non viene eseguito in una shell separata (come determinato da pstreein un altro terminale). Tuttavia, nello Snippet di codice B, il secondo sleepcomando viene eseguito in una shell separata. L'unica differenza tra gli snippet è che il secondo snippet ha due comandi tra parentesi.
Qualcuno potrebbe spiegare la regola per quando vengono creati i subshell?
CODICE SNIPPET A:
sleep 5
(
sleep 5
)
CODICE SNIPPET B:
sleep 5
(
x=1
sleep 5
)
forke il processo figlio viene creato (per eseguire comandi esterni) chiamandofork + exec. Ma il tuo primo para suggerisce chefork + execè chiamato anche subshell. Cosa sto sbagliando qui?