2011-09-27 3 views
0

나는 Mac에서 모든 새로운 프로세스를 시작할 책임이있는 시스템 호출 &을 찾고 있습니다. CreateProcess()와 같아야하고 새로 생성 된 프로세스의 프로세스 ID를 반환해야한다고 생각합니다. (추측입니다)Mac에서 새로운 응용 프로그램을 어떻게 시작합니까?

새로운 응용 프로그램을 시작하는 흐름과 같은 내부 세부 정보에 관심이 있습니다.

도움을 주시면 감사하겠습니다. 돌봐야 할 참조가 도움이 될 수도 있습니다.

답변

0

일반적으로 Mac OS X LaunchD는 모든 프로세스의 부모입니다. LaunchD가이를 출시합니다. 방법?? 먼저 fork()을 입력 한 다음 posix_spawn()을 입력하십시오.

1

OS X은 다양한 유닉스입니다. 새로운 프로세스는 fork() 시스템 호출로 생성됩니다. 이렇게하면 호출을하는 프로세스와 거의 동일한 복사본이 생성됩니다 (차이점은 자식에서 0이 반환되고 부모에는 자식이 반환 됨). 그런 다음 자식의 exec() syscall 중 하나를 사용하여 자식을 다른 실행 파일을 실행하는 프로세스로 변환합니다.

편집

질문이 태그되어 있기 때문에 [코코아], 내가 위를 랩 NSTask라는 코코아 클래스가 언급해야한다.

+0

프로세스가 분기하여 실행하는 아이디어가 있습니까? – MacGeek

+0

@MachinTosh : 모든 프로세스는 fork/exec을 수행 할 수 있습니다. – JeremyP

+0

모든 프로세스가 fork/exec 할 수 있음을 이해합니다. 그러나 도크, 터미널, 아이튠즈와 같은 모든 애플리케이션의 공통점을 찾는 데 관심이 있습니까? 어떤 프로세스가 fork & launch를할까요? – MacGeek

관련 문제