I/O가 리디렉션되는 파일을 생성/기록하는 프로세스/프로그램은 무엇입니까?

I/O가 리디렉션되는 파일을 생성/기록하는 프로세스/프로그램은 무엇입니까?

SELinux를 배우면서 많은 fcontext 정보를 디렉토리의 파일로 덤프 semanage fcontext -l > fcontext.txt했습니다 . /root흥미로운 결과는 fcontext.txt생성되었지만 크기가 0이라는 것입니다.

내가 물어봤어#fedora-selinuxfcontext.txtIRC 채널인 Fedora QA 에서는 SELinux 컨텍스트 유형을 semanage_tmp_t.

하지만 여전히 나를 혼란스럽게 만드는 것은 다음과 같습니다.

리디렉션된 파일에 stdout을 생성/기록하는 프로세스/프로그램은 무엇입니까? (프로세스/프로그램에 SELinux 대상 정책이 적용되도록)

  • 배쉬 쉘?/bin/bash
  • 아니면 semanage(파이썬 스크립트)인가요?/usr/sbin/semanage
  • 아니면 통역사 - 파이썬?/usr/bin/python

I/O 리디렉션은 프로그램 자체가 아닌 쉘(맞죠?)에 의해 제어되므로 bash 쉘이어야 한다고 생각합니다. 따라서 semanage/python은 파일을 직접 생성하지 않습니다.

답변1

당신 말이 맞습니다. 입력 및 출력 스트림의 리디렉션은 쉘에 의해 수행됩니다.

좀 더 자세히 설명하면, 셸을 통해 명령을 실행하면 다음과 같은 프로세스가 실행됩니다.

  1. 껍데기포크새 프로세스를 만듭니다.

  2. 새로 생성된 셸("하위" 셸)은 리디렉션을 적용합니다. 출력 대상(또는 입력 소스)으로 지정된 파일을 열고 이를 새 STDOUT(또는 STDIN) 스트림으로 설정합니다(다음을 사용). 듀프 2시스템 호출).

  3. "하위" 쉘은 다음을 사용하여 실행을 요청한 명령을 실행합니다. 실행(2)쉘 프로세스를 새로운 프로그램으로 대체하기 위한 시스템 호출입니다.

관련 정보