4. Menjalankan Sandbox
Di bagian sebelumnya, Anda telah menyiapkan lingkungan sandbox, kebijakan, dan
pelaksana serta Sandboxee. Langkah berikutnya adalah membuat objek Sandbox2
dan menjalankannya.
Menjalankan secara sinkron
Sandbox dapat berjalan secara sinkron, sehingga memblokir hingga ada hasil. Cuplikan kode di bawah menunjukkan instansiasi 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();
Menjalankan secara asinkron
Anda juga dapat menjalankan sandbox secara asinkron, sehingga tidak memblokir hingga ada hasil. 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();