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