4. Ejecuta la zona de pruebas

En las secciones anteriores, preparaste el entorno de zona de pruebas, la política, el ejecutor y Sandboxee. El siguiente paso es crear el objeto Sandbox2 y ejecutarlo.

Ejecutar de forma síncrona

El sandbox puede ejecutarse de forma síncrona, lo que lo bloquea hasta que haya un resultado. En el siguiente fragmento de código, se muestra la creación de instancias del objeto Sandbox2 y su ejecución síncrona. Para ver un ejemplo más detallado, consulta static.

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

Se ejecutan de manera asíncrona.

También puedes ejecutar la zona de pruebas de forma asíncrona, por lo que no se bloqueará hasta que haya un resultado. Esto es útil, por ejemplo, cuando te comunicas con el Sandboxee. En el siguiente fragmento de código, se muestra este caso de uso. Para ver ejemplos más detallados, consulta crc4 y 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();