6. Opuszczanie piaskownicy
W zależności od sposobu uruchomienia piaskownicy (patrz ten krok) musisz dostosować sposób jej zamykania, a tym samym także sposób zamykania procesu Sandboxee.
Zamykanie piaskownicy działającej synchronicznie
Jeśli piaskownica działała synchronicznie, funkcja Run zwróci wartość dopiero po zakończeniu działania procesu Sandboxee. Dlatego nie jest wymagany żaden dodatkowy krok związany z zakończeniem subskrypcji. Poniższy fragment kodu ilustruje ten scenariusz:
Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();
Zamykanie piaskownicy działającej asynchronicznie
Jeśli piaskownica działała asynchronicznie, dostępne są 2 opcje zakończenia. Najpierw możesz poczekać na zakończenie działania Sandboxee i otrzymać ostateczny stan wykonania:
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();
Możesz też w każdej chwili zakończyć działanie Sandboxee, ale nadal zalecamy wywołanie funkcji AwaitResult()
, ponieważ Sandboxee może w międzyczasie zakończyć działanie z innego powodu:
s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();