서브 쉘 작성에 대한 Bash 규칙을 오해하는 것 같습니다. 괄호는 항상 자체 프로세스로 실행되는 서브 쉘을 생성한다고 생각했습니다.
그러나 이것은 사실이 아닙니다. 코드 스 니펫 A (아래)에서 두 번째 sleep
명령은 pstree
다른 터미널에서 결정된 별도의 셸에서 실행되지 않습니다 . 그러나 코드 조각 B에서 두 번째 sleep
명령 은 별도의 셸에서 실행됩니다. 스 니펫의 유일한 차이점은 두 번째 스 니펫에는 괄호 안에 두 개의 명령이 있다는 것입니다.
서브 쉘 작성시기에 대한 규칙을 누군가가 설명해 주시겠습니까?
코드 스 니펫 A :
sleep 5
(
sleep 5
)
코드 스 니펫 B :
sleep 5
(
x=1
sleep 5
)
fork
하여 서브 쉘을 작성하고를 호출 하여 하위 프로세스를 작성합니다 (외부 명령을 실행하기 위해)fork + exec
. 그러나 첫 번째 단락은fork + exec
하위 쉘도 필요 하다는 것을 암시합니다 . 내가 여기서 잘못하고있는 것은 무엇입니까?