6. خروج از جعبه شنی
بسته به نحوه اجرای sandbox ( این مرحله را ببینید)، باید نحوه پایان دادن به sandbox و بنابراین 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();
،6. خروج از جعبه شنی
بسته به نحوه اجرای sandbox ( این مرحله را ببینید)، باید نحوه پایان دادن به sandbox و بنابراین 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();