POSIX 및 방법은 그것을 (? https://technet.microsoft.com/en-us/library/bb463220.aspx 어쩌면 너무 Windows에서 사용할 수있는) 할 수있는 다른 플랫폼에 대한 아이디어가 없습니다 fork + exec* 콤보를 사용하려면
fork을 사용하면 현재 프로세스를 복사하는 새 프로세스를 만들 수 있습니다. 그 과정에 대한 귀하의 핸들은 INT 프로세스 식별자 (PID)입니다 :
int pid;
if (0 > (pid=fork()){
perror("fork failed");
return -1;
}
if (0 == pid){
//CHILD PROCESS
printf("I'm the child process, my pid is: %d\n", getpid());
}
//pid > 0 ==> PARENT PROCESS
puts ("I'm the parent process");
printf("The pid of the child I've just spawned is %d\n", pid);
가 (현재를 대체하기 위해 exec* 기능을 사용하여, 자식 프로세스의 실행 파일을 실행하려면 예를 들어, 당신이 경우 자녀의 하위 이미지에서 실행) 프로세스 이미지를 실행 파일에서로드합니다. 부모에서
, 당신은 다음 (종료를 요청 =)
kill에 과정을
PID 핸들을 사용할 수 있습니다
kill(pid, SIGTERM); //please terminate
을하고 종료 된 후에는 종료 상태를 검색 할 수 waitpid을 사용할 수 있습니다 .
은 (system 내부적으로 system
가 자식 프로세스가 완료 될 때까지 기다릴 수는 waitpid
부분은 system
에서 분리되지 않기 때문에 fork
+ execv
이 (가. 쉘) + waitpid
을 경영진 사용합니다.)
또한 (예 : 공유 메모리, 메시지 큐, 또는 신호와 같은 다른 옵션이 자식 프로세스와 fildescriptor 기반의 통신 채널을 설정하는
dup2 및
pipe 또는
socketpair 보길 원하는 아마 것
당신이 경우에만 매우 기본적인 의사 소통이 필요함).
맨 페이지는 프로세스 및 IPC를 관리하는 데 유용한 리소스입니다.
thx 이것은 많은 도움이된다. :) 나는 미래에 사용할 것이지만 지금은 더 간단하게 테스트를 재 설계 할 것이라고 생각한다. 1. 테스트 서버를 별도의 pthread로 실행한다. 2. 쉘 cmd를 사용하여 popen()으로 서버를 echo한다. 3. cmd 출력을 얻고 그것이 맞다는 것을 주장하십시오. –