여러 번 분기할 수 있는 코드나 프로그램을 테스트할 수 있도록 격리 환경을 어떻게 설정합니까? Mac에서 이 작업을 시도했는데 제대로 바인딩되지 않은 while 루프에 포크가 있으면 터미널이 정지되고 포크 리소스를 일시적으로 사용할 수 없게 표시됩니다. 그런 경우에는 ps나 kill도 사용할 수 없고 만날 때마다 꺼야 합니다.
또한 _exit(3)을 사용하여 자식 프로세스를 종료하려고 합니다. 잘못하고 있는 것일 수도 있습니다. 누구든지 도와줄 수 있나요?
내가 시도한 코드는 다음과 같습니다.
pid = fork();
if(pid > 0){
if(findCharInString(';',input)){
printf("Two commands %s\n",input );
sleep(1);
_exit(3);
}
else{
system(input);
}
}
if(pid == 0){
return 0;
}
답변1
pid==0은 무한 루프에서 스크립트를 잠급니다. pid=0은 방정식이지만 pid==0은 부울이고 항상 FALSE이기 때문입니다.