6. Sair do sandbox
Dependendo de como você executa o sandbox (consulte esta etapa), é necessário ajustar a maneira de encerrar o sandbox e, portanto, também o Sandboxee.
Como sair de um sandbox em execução síncrona
Se o sandbox estiver sendo executado de forma síncrona, "Run" só vai retornar quando o Sandboxee for concluído. Portanto, nenhuma etapa adicional para rescisão é necessária. O snippet de código abaixo mostra esse cenário:
Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();
Como sair de um sandbox em execução de forma assíncrona
Se a sandbox estiver sendo executada de forma assíncrona, duas opções estarão disponíveis para encerramento. Primeiro, aguarde a conclusão do Sandboxee e receba o status de execução final:
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();
Como alternativa, você pode encerrar o Sandboxee a qualquer momento, mas ainda é recomendável chamar AwaitResult()
porque o Sandboxee pode ser encerrado por outro motivo nesse período:
s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();