4. স্যান্ডবক্স চালান

পূর্ববর্তী বিভাগগুলিতে, আপনি স্যান্ডবক্সযুক্ত পরিবেশ, নীতি, এবং নির্বাহক এবং স্যান্ডবক্সী প্রস্তুত করেছেন। পরবর্তী ধাপ হল 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();

অ্যাসিঙ্ক্রোনাসভাবে চালান

আপনি স্যান্ডবক্সটি অ্যাসিঙ্ক্রোনাসভাবে চালাতে পারেন, এইভাবে ফলাফল না পাওয়া পর্যন্ত ব্লক করা যাবে না। উদাহরণস্বরূপ, স্যান্ডবক্সির সাথে যোগাযোগ করার সময় এটি দরকারী। নীচের কোড স্নিপেট এই ব্যবহারের ক্ষেত্রে প্রদর্শন করে, আরও বিস্তারিত উদাহরণের জন্য 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();
,

4. স্যান্ডবক্স চালান

পূর্ববর্তী বিভাগগুলিতে, আপনি স্যান্ডবক্সযুক্ত পরিবেশ, নীতি, এবং নির্বাহক এবং স্যান্ডবক্সী প্রস্তুত করেছেন। পরবর্তী ধাপ হল 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();

অ্যাসিঙ্ক্রোনাসভাবে চালান

আপনি স্যান্ডবক্সটি অ্যাসিঙ্ক্রোনাসভাবে চালাতে পারেন, এইভাবে ফলাফল না পাওয়া পর্যন্ত ব্লক করা যাবে না। উদাহরণস্বরূপ, স্যান্ডবক্সির সাথে যোগাযোগ করার সময় এটি দরকারী। নীচের কোড স্নিপেট এই ব্যবহারের ক্ষেত্রে প্রদর্শন করে, আরও বিস্তারিত উদাহরণের জন্য 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();