6. Uscire dalla sandbox

A seconda di come esegui la sandbox (vedi questo passaggio), devi modificare il modo in cui la termini e, di conseguenza, anche Sandboxee.

Uscita da una sandbox in esecuzione in modo sincrono

Se la sandbox è stata eseguita in modo sincrono, Run restituirà un valore solo al termine dell'esecuzione di Sandboxee. Pertanto, non è necessario alcun passaggio aggiuntivo per la risoluzione. Lo snippet di codice riportato di seguito mostra questo scenario:

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

Uscita da una sandbox in esecuzione in modo asincrono

Se la sandbox è stata eseguita in modo asincrono, sono disponibili due opzioni per la terminazione. Innanzitutto, puoi semplicemente attendere il completamento di Sandboxee e ricevere lo stato di esecuzione finale:

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

In alternativa, puoi terminare Sandboxee in qualsiasi momento, ma è comunque consigliabile chiamare AwaitResult() perché Sandboxee potrebbe terminare per un altro motivo nel frattempo:

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