6. 退出沙盒

您必须根据沙盒的运行方式(请参阅此步骤)调整终止沙盒的方式,从而同时调整 Sandboxee 的方式。

退出同步运行的沙盒

如果沙盒已在同步运行,则“Run”仅在 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();

或者,您也可以随时终止 Sandboxee,但仍建议调用 AwaitResult(),因为在此期间 Sandboxee 可能会因其他原因而终止:

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