4. Sandbox را اجرا کنید

در قسمت های قبل محیط sandboxed، Policy و executor و Sandboxee را آماده کردید. مرحله بعدی ایجاد شی Sandbox2 و اجرای آن است.

به صورت همزمان اجرا شود

جعبه شنی می‌تواند به صورت همزمان اجرا شود، بنابراین تا زمانی که نتیجه‌ای حاصل شود مسدود می‌شود. قطعه کد زیر نمونه سازی شی Sandbox2 و اجرای همزمان آن را نشان می دهد. برای مثال دقیق تر، static را ببینید.

#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();
،

4. Sandbox را اجرا کنید

در قسمت های قبل محیط sandboxed، Policy و executor و Sandboxee را آماده کردید. مرحله بعدی ایجاد شی Sandbox2 و اجرای آن است.

به صورت همزمان اجرا شود

جعبه شنی می‌تواند به صورت همزمان اجرا شود، بنابراین تا زمانی که نتیجه‌ای حاصل شود مسدود می‌شود. قطعه کد زیر نمونه سازی شی Sandbox2 و اجرای همزمان آن را نشان می دهد. برای مثال دقیق تر، static را ببینید.

#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();