어떤 시스템 호출이 상위 프로세스를 생성합니까?

어떤 시스템 호출이 상위 프로세스를 생성합니까?

내 이해는 이것이 fork상위 프로세스를 복제하여 새 프로세스를 생성하는 시스템 호출이라는 것입니다. 상위 프로세스는 어떤 방법으로 생성되나요? C 라이브러리를 사용하여 여러 프로세스를 생성하는 경우 첫 번째 프로세스를 생성하기 위한 시스템 호출은 무엇입니까? 예를 들어, 실행할 때./main.o

답변1

커널 자체에는 execve()절대 종료되지 않는 프로세스 1(init)을 생성하는 내부 호출이 포함되어 있습니다.

Init()는 전체 프로세스 트리의 루트입니다. 먼저 알려진 모든 서비스와 기타 구성된 작업은 물론 로그인된 모든 장치에 대한 프로세스를 분기합니다.

답변2

쉘에서 프로그램을 실행하면 쉘이 상위 프로세스가 됩니다.

쉘 호출은 fork()새로운 하위 프로세스를 생성한 다음 해당 새 프로세스의 계열 중 하나를 호출하여 exec()프로그램 실행을 시작합니다.

프로그램이 다른(셸이 아닌) 프로세스에 의해 시작되는 경우 순서는 동일합니다.

init분명히 이것은 어딘가에서 시작되어야 합니다. 모든 프로세스의 궁극적인 조상은 사용자 공간을 시작하기 위해 커널에 의해 마술처럼 시작되는 프로세스(PID 0)입니다 .

관련 정보