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 และ 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();