6. サンドボックスを終了する

サンドボックスの実行方法(このステップを参照)に応じて、サンドボックスの終了方法を調整する必要があります。したがって、Sandboxee も調整する必要があります。

同期的に実行されているサンドボックスを終了する

サンドボックスが同期的に実行されている場合、Sandboxee が終了したときにのみ Run が返されます。そのため、終了のための追加の手順は必要ありません。次のコード スニペットは、このシナリオを示しています。

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

非同期で実行されているサンドボックスを終了する

サンドボックスが非同期で実行されている場合、終了には 2 つのオプションがあります。まず、Sandboxee の完了を待って、最終的な実行ステータスを受け取ることができます。

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

また、Sandboxee はいつでも強制終了できますが、その間に別の理由で Sandboxee が終了する可能性があるため、AwaitResult() を呼び出すことをおすすめします。

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