4. Menjalankan Sandbox

Di bagian sebelumnya, Anda telah menyiapkan lingkungan, kebijakan, eksekutor, serta eksekutor dalam sandbox dan Sandboxee. Langkah berikutnya adalah membuat objek Sandbox2 dan menjalankannya.

Berjalan secara sinkron

Sandbox dapat berjalan secara sinkron, sehingga melakukan pemblokiran hingga muncul hasil. Cuplikan kode di bawah ini menunjukkan pembuatan instance objek Sandbox2 dan eksekusi sinkronnya. Untuk contoh yang lebih mendetail, lihat statis.

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

Berjalan secara asinkron

Anda juga dapat menjalankan sandbox secara asinkron, sehingga tidak memblokir hingga ada hasilnya. Hal ini berguna, misalnya, saat berkomunikasi dengan Sandboxee. Cuplikan kode di bawah menunjukkan kasus penggunaan ini. Untuk contoh yang lebih mendetail, lihat crc4 dan 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();