6. Como sair do sandbox
Dependendo de como você executa o sandbox (consulte esta etapa), é necessário ajustar a forma como você encerra o sandbox e, consequentemente, o sandboxee.
Como sair de um sandbox em execução síncrona
Se o sandbox estiver sendo executado de forma síncrona, a função Run só retornará quando o sandboxee for concluído. Portanto, nenhuma outra etapa é necessária para a rescisão. O snippet de código abaixo mostra esse cenário:
Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();
Sair de um sandbox em execução assíncrona
Se o sandbox estiver sendo executado de maneira assíncrona, duas opções estarão disponíveis para encerramento. Primeiro, basta aguardar a conclusão do sandbox e receber 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 é recomendado chamar AwaitResult()
, porque ele pode ser encerrado por outro motivo:
s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();