나는 응답 할 늦었 어,하지만 여기에 내가 그것을 할 방법은 다음과 같습니다
const char *progname = "./yourProgName";
const char *argument1 = "arg1";
const char *argument2 = "arg2";
if (fork() == 0)
{
// We are the child process, so replace the process with a new executable.
execl(progname, progname, argument1, argument2, (char *)NULL);
}
// The parent process continues from here.
먼저, 포크() 프로세스를 새로운 프로세스를 만들 수 있습니다. 이전 메모리와 동일한 메모리 공간을가집니다. fork()는 부모 프로세스와 자식 프로세스 모두를 반환합니다. fork()가 0을 반환하면, 당신은 자식 프로세스입니다. 그런 다음 하위 프로세스는 execl()을 사용하여 프로세스 메모리를 새 파일의 메모리로 대체합니다.
progname은 execl()에 두 번 주어집니다. 첫 번째는 execl()이 실제로 실행하려고 시도하는 것이며, 두 번째는 argv [0]입니다. 둘 다 제공해야합니다. 그렇지 않으면 인수 카운트가 1 씩 해제됩니다. Progname은 필요한 실행 가능 이미지를 찾기 위해 필요한 모든 경로 정보를 포함해야합니다.
이 예제에서는 두 가지 인수를 제공하지만 원하는만큼 전달할 수 있습니다. 그것은 NULL로 끝나야하고, 내가 보여 주듯이 (char *)로 캐스팅해야한다고 생각합니다.
이 접근 방식은 인수와 고유 한 PID를 사용하여 완전히 독립적 인 프로세스를 제공합니다. 상위 프로세스가 종료 된 후 오랫동안 계속 실행하거나 상위 프로세스보다 종료 될 수 있습니다.
'fork'는 진행중인 프로세스의 복사본을 생성합니다. * 프로세스를 초기화하지 않습니다 *. – Beta
http://advancedlinuxprogramming.com/ –