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

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

내 이해는 그것이 fork상위 프로세스를 복제하여 새로운 프로세스를 생성하는 시스템 호출이라는 것입니다. 부모 프로세스는 무엇으로 생성됩니까? C 라이브러리를 사용하여 여러 프로세스를 생성하는 경우 첫 번째 프로세스를 생성하기 위한 시스템 호출은 무엇입니까? 예를 들어 달릴 때./main.o

답변1

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

Init()는 전체 프로세스 트리의 루트입니다. 알려진 모든 서비스와 기타 구성된 작업, 모든 로그인 장치에 대한 프로세스를 분기하는 것으로 시작됩니다.

답변2

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

셸은 fork()새 하위 프로세스를 생성하기 위해 호출한 다음 해당 새 프로세스에서 제품군 중 하나를 호출하여 exec()프로그램 실행을 시작합니다.

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

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

관련 정보