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