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();