6. יציאה מ-Sandbox

בהתאם לאופן שבו אתם מפעילים את ארגז החול (ראו שלב זה), עליכם להתאים את אופן סיום ה-Sandbox, וכן את האופן שבו אתם מסיימים את ארגז החול.

יציאה מארגז חול שפועל באופן סינכרוני

אם ארגז החול פועל באופן סינכרוני, הפעלה תחזור רק כאשר ה-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();