4. تشغيل Sandbox

في الأقسام السابقة، تم إعداد بيئة وضع الحماية والسياسة والأداة التنفيذية وSandboxee. الخطوة التالية هي إنشاء الكائن Sandbox2 وتشغيله.

التشغيل بشكلٍ متزامن

يمكن تشغيل وضع الحماية في الوقت نفسه، وبالتالي الحظر إلى أن تظهر نتيجة. يوضّح مقتطف الرمز أدناه إنشاء مثيل الكائن Sandbox2 وتنفيذه المتزامن. للحصول على مثال أكثر تفصيلاً، راجع الثابت.

#include "sandboxed_api/sandbox2/sandbox2.h"

sandbox2::Sandbox2 s2(std::move(executor), std::move(policy));
sandbox2::Result result = s2.Run();  // Synchronous
LOG(INFO) << "Result of sandbox execution: " << result.ToString();

التنفيذ بشكل غير متزامن

يمكنك أيضًا تشغيل وضع الحماية بشكل غير متزامن، وبالتالي لا يتم الحظر إلى أن تظهر نتيجة. وهذا مفيد، على سبيل المثال، عند التواصل مع Sandboxee. يوضح مقتطف الرمز أدناه حالة الاستخدام هذه. لمزيد من الأمثلة التفصيلية، راجع crc4 والأداة.

#include "sandboxed_api/sandbox2/sandbox2.h"

sandbox2::Sandbox2 s2(std::move(executor), std::move(policy));
if (s2.RunAsync()) {
  // Communicate with sandboxee, use s2.Kill() to kill it if needed
  // ...
}
Sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();