6. 샌드박스 종료

샌드박스를 실행하는 방식 (이 단계 참고)에 따라 샌드박스 종료 방식과 Sandboxee도 조정해야 합니다.

동기식으로 실행되는 샌드박스 종료

샌드박스가 동기식으로 실행된 경우 Sandboxee가 완료된 경우에만 실행이 반환됩니다. 따라서 종료를 위한 추가 단계는 필요하지 않습니다. 아래 코드 스니펫은 이 시나리오를 보여줍니다.

Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();

비동기적으로 실행되는 샌드박스 종료

샌드박스가 비동기식으로 실행된 경우 종료를 위한 두 가지 옵션을 사용할 수 있습니다. 먼저 Sandboxee가 완료될 때까지 기다렸다가 최종 실행 상태를 수신할 수 있습니다.

sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();

또는 언제든지 샌드박스를 종료할 수 있지만 샌드박스가 그동안 다른 이유로 종료될 수 있으므로 AwaitResult()를 호출하는 것이 좋습니다.

s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();