!["execve" 호출 중에 권한이 없는 프로세스의 어떤 속성이 보존됩니까?](https://linux55.com/image/11231/%22execve%22%20%ED%98%B8%EC%B6%9C%20%EC%A4%91%EC%97%90%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EC%97%86%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%96%B4%EB%96%A4%20%EC%86%8D%EC%84%B1%EC%9D%B4%20%EB%B3%B4%EC%A1%B4%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
저는 운영 체제 과정을 가르치고 있으며 새로운 프로세스를 생성하는 기술에 집중하려고 노력하고 있습니다 fork
.execve
내가 현재 알고 있는 바는 포크가 이전 프로세스의 완전한 복사본을 만들어 새로운 PID와 부모/자식 관계를 설정하지만 그 외에는 거의 수행하지 않는다는 것입니다.
반면에 자식 프로세스가 생성된 후에는 execve를 실행하여 대부분의 메모리를 새 프로세스로 교체합니다. 예를 들어, 프로그램 코드, 스택, 힙을 모두 교체하고 새로운 프로그램으로 처음부터 시작합니다.
그러나 모든 것이 새로운 프로세스로 대체되는 것은 아닙니다. 하위 프로세스는 파일 설명자(execve 전에 파이프를 설정할 수 있음), 프로세스 ID(PID) 및 사용자 ID(UID)를 상속합니다.일부 권한(매뉴얼 페이지).
execve 호출로 대체되지 않은 속성의 전체 목록이 꽤 긴 것 같은데, (위에서 언급했지만 누락된 것과 같은) 다른 주요 속성이 있습니까?
답변1
우리는 Linux에 대해 구체적으로 이야기하고 있으므로(적어도 Linux를 사용하기 때문에 그것이 당신이 원하는 것이라고 생각합니다.운영 체제상표),fork
그리고execve
매뉴얼 페이지는 모든 속성을 나열하는 적절한 참조입니다.아니요저장해. 이 동작의 대부분은 POSIX에 의해 지정되지만 일부 Linux 특성도 있습니다.
매뉴얼 페이지에는 다음 속성이 나열되지 않습니다.예예약하되 그렇지 않은 것에 집중하세요.
execve()
다음 속성을 제외한 모든 프로세스 속성은 해당 기간 동안 보존됩니다 .
등.
나는 보유된 모든 속성을 나열하여 귀하의 질문에 대답하려고 하지 않을 것입니다. 그러나 아직 나열되지 않은 보존된 주요 속성 중 하나를 지적하겠습니다. 무시 및 기본 신호는 execve
부모가 신호(적어도 무시할 수 있는 신호)를 무시할 수 있으며 해당 동작이 전파된다는 의미입니다. 어떤 어린이에게나. 이것이 nohup
일을 허용하는 것입니다.
exec()
fork()
또는 의 섹션 28.4에서 프로세스 속성의 전체 목록과 프로세스 속성에 어떤 일이 발생하는지에 대한 설명을 찾을 수 있습니다 .리눅스 프로그래밍 인터페이스.