6. Sandbox beenden

Je nachdem, wie Sie die Sandbox ausführen (siehe diesen Schritt), müssen Sie die Methode zum Beenden der Sandbox und somit auch die des Sandboxee anpassen.

Eine synchron ausgeführte Sandbox beenden

Wenn die Sandbox synchron ausgeführt wurde, wird die Ausführung erst dann wieder ausgeführt, wenn der Sandboxee fertig ist. Es ist also kein zusätzlicher Kündigungsschritt erforderlich. Das folgende Code-Snippet veranschaulicht dieses Szenario:

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

Asynchron ausgeführte Sandbox beenden

Wenn die Sandbox asynchron ausgeführt wurde, stehen zwei Optionen für die Beendigung zur Verfügung. Zuerst können Sie einfach warten, bis der Sandboxee abgeschlossen ist, und den endgültigen Ausführungsstatus erhalten:

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

Alternativ können Sie das Sandboxee jederzeit beenden. Es wird jedoch empfohlen, AwaitResult() aufzurufen, da das Sandboxee in der Zwischenzeit aus einem anderen Grund beendet werden könnte:

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