4. Ejecuta la zona de pruebas

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

Ejecuta de forma síncrona

La zona de pruebas se puede ejecutar de forma síncrona, por lo que se 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 obtener un ejemplo más detallado, consulta estática.

#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, de modo que no se bloquee hasta que haya un resultado. Esto es útil, por ejemplo, cuando te comunicas con el objeto Sandboxee. En el siguiente fragmento de código, se muestra este caso de uso. Para ver ejemplos más detallados, consulta crc4 y la herramienta.

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