Wydaje mi się, że źle rozumiem zasadę Bash dotyczącą tworzenia podpowłoki. Myślałem, że nawiasy zawsze tworzą podpowłokę, która działa jako własny proces.
Wydaje się jednak, że tak nie jest. W fragmencie kodu A (poniżej) drugie sleeppolecenie nie działa w osobnej powłoce (określonej przez pstreeinny terminal). Jednak we fragmencie kodu B drugie sleeppolecenie działa w osobnej powłoce. Jedyną różnicą między fragmentami jest to, że drugi fragment zawiera dwa polecenia w nawiasach.
Czy ktoś mógłby wyjaśnić tę zasadę podczas tworzenia podpowłoki?
KOD SNIPPET A:
sleep 5
(
sleep 5
)
KOD SNIPPET B:
sleep 5
(
x=1
sleep 5
)
forka proces potomny jest tworzony (w celu wykonywania poleceń zewnętrznych) przez wywołaniefork + exec. Ale twój pierwszy para sugeruje, żefork + execjest to również wymagane dla podpowłoki. Co się tutaj mylę?