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