6. יציאה מארגז החול
בהתאם לאופן ההפעלה של ארגז החול (ראו את השלב הזה), צריך לשנות את אופן הסיום של ארגז החול, וכך גם את Sandboxee.
יציאה מארגז חול שפועל באופן סינכרוני
אם ארגז החול פעל באופן סינכרוני, הפונקציה Run תחזיר ערך רק כשה-Sandboxee יסיים את הפעולה. לכן לא נדרש שלב נוסף לסיום. קטע הקוד הבא מדגים את התרחיש הזה:
Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();
יציאה מארגז חול שפועל באופן אסינכרוני
אם ארגז החול פעל באופן אסינכרוני, יש שתי אפשרויות לסיום הפעולה. קודם כל, אפשר פשוט לחכות לסיום של Sandboxee ולקבל את סטטוס ההפעלה הסופי:
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();
לחלופין, אפשר להרוג את Sandboxee בכל שלב, אבל עדיין מומלץ להתקשר אל AwaitResult()
כי יכול להיות ש-Sandboxee יסתיים בינתיים בגלל סיבה אחרת:
s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();