스왑 파티션이없는 임베디드 플랫폼에서 주 프로세스가 사용 가능한 실제 메모리의 대부분을 차지하는 응용 프로그램이 있습니다. 문제는 응용 프로그램에서 외부 셸 스크립트를 시작하려고하지만 fork()를 사용하면 자식 프로세스 (궁극적으로 훨씬 작은 것으로 execl 될)를 만들기 전에 원래 프로세스의 2 배에 해당하는 충분한 메모리가 있어야합니다. .많은 메모리를 사용하는 프로세스에서 메모리가 부족한 fork()를 사용하지 않고 어떻게 쉘을 생성 할 수 있습니까?
그래서 fork()의 메모리 오버 헤드없이 C 프로그램에서 쉘 스크립트를 호출 할 수있는 방법이 있습니까?
필자는 쉘을 생성하는 보조 프로세스가 작거나 파일을 터치하여 신호를 보내는 "감시자"스크립트를 사용하는 등의 해결 방법을 고려해 왔지만 훨씬 간단한 것이 더 있습니다.
참조 그렉 Hewgill의 답변을.이것은 플랫폼에 다소 의존합니다. 사용중인 플랫폼 (예 : MMU가 있습니까?)에 대해 자세히 설명해 주실 수 있습니까? – ConcernedOfTunbridgeWells
어제 * 질문에 속지 않습니다. ?? http://stackoverflow.com/questions/2731531/faster-forking-of-large-processes-on-linux –
예, 아니요, @Pavel,이 하나는 Linux에만 국한되지 않으며 추가 정보가 있습니다. 실행중인 항목 - 쉘 스크립트. 다른 질문자는 스레드를 사용하기 위해 응용 프로그램을 다시 작성할 수있는 옵션을 가지고있을 수도 있습니다 (exec'ed 프로그램이 bash/ksh/other-shell이 아닌 자신의 제어하에 실행 가능할 경우).이 경우에는 그렇지 않을 수도 있습니다. – paxdiablo