6. Sandbox verlassen

Je nachdem, wie Sie die Sandbox ausführen (siehe diesen Schritt), müssen Sie die Art und Weise anpassen, wie Sie die Sandbox und damit auch den Sandboxee beenden.

Sandbox synchron beenden

Wenn die Sandbox synchron ausgeführt wurde, wird „Run“ erst zurückgegeben, wenn der Sandboxee-Prozess abgeschlossen ist. Daher ist kein zusätzlicher Schritt für die Kündigung 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, gibt es zwei Möglichkeiten zum Beenden. Zuerst können Sie einfach warten, bis die Sandboxee abgeschlossen ist, und den endgültigen Ausführungsstatus abrufen:

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

Alternativ können Sie die Sandboxee jederzeit beenden. Es wird jedoch weiterhin empfohlen, AwaitResult() aufzurufen, da die 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();