4. تشغيل "وضع الحماية"
في الأقسام السابقة، أعددت البيئة المحصورة في وضع الحماية والسياسة وبرنامج التنفيذ و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 وtool.
#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();