배쉬 매뉴얼에서
프로세스 대체지원되는 시스템에서 지원됨명명된 파이프 (fifos) 또는
/dev/fd
파일을 여는 명명된 방법입니다. 형태를 취합니다<(list)
또는
>(list)
프로세스 목록의 입력 또는 출력은 fifo 또는 에 연결됩니다
/dev/fd
. 파일 이름은 확장 결과로 현재 명령에 인수로 전달됩니다.
명령이 list
프로세스 대체에서 호출됩니까, <(list)
아니면 >(list)
명령 대체, 대괄호 그룹 명령 및 비동기 명령과 같은 하위 쉘에서 호출됩니까? bash 매뉴얼에서 말하는 것과 유사합니다.
명령 대체, 괄호로 묶인 명령 및 비동기 명령은 다음과 같습니다.서브쉘 환경에서 호출됨이는 쉘이 포착한 트랩이 호출 시 쉘이 상위 쉘로부터 상속받은 값으로 재설정된다는 점을 제외하면 쉘 환경의 사본입니다.
대답은 아마도 '예'일 것입니다. 왜냐하면
프로세스 대체는 명령 대체와 유사합니다.
일부 출처설명하다
여기에 포함된 명령은 백그라운드에서 실행됩니다.
위 bash 매뉴얼의 두 번째 문장은 명령 대체 및 백그라운드 명령이 서브쉘에서 호출된다는 것을 의미합니다.
대답은 아마도 '아니요'일 것입니다. 왜냐하면
Bash 매뉴얼에서는 위의 Bash 매뉴얼에서 두 번째 인용문에 언급된 프로세스 대체를 볼 수 없습니다.
그리고일부 출처프로세스 대체에 대해 이야기
파이프 우회로 인해 발생하는 서브쉘에 특히 중요합니다.
"서브쉘 우회"가 서브쉘을 호출하지 않는다는 의미인지는 확실하지 않습니다.
답변1
현재 쉘을 실행 strace(1)
한 후 실행하면 다음이 <(command)
제공됩니다.
클론(child_stack = 0, 플래그 = CLONE_CHILD_CLEARTID | CLONE_CHILD_SETTID | SIGCHLD, child_tidptr = 0x7fa6713d59d0) = 13305
순전히 정의적인 관점에서 보면,클론(2)~로써 정의 된
자식 프로세스 만들기
그리고서브쉘~처럼
쉘 스크립트를 실행하면 서브쉘이라는 새로운 프로세스가 시작됩니다.
예라고 말할 수도 있습니다. 실행 중인 프로세스는 하위 쉘이 호출될 때 교체됩니다.