6. Выход из песочницы

В зависимости от того, как вы запускаете песочницу (см. этот шаг ), вам необходимо настроить способ закрытия песочницы, а значит, и самого Sandboxee.

Выход из песочницы, работающей синхронно

Если песочница работала синхронно, то Run вернется только после завершения Sandboxee. Поэтому никаких дополнительных действий для прекращения не требуется. Фрагмент кода ниже демонстрирует этот сценарий:

Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();

Выход из песочницы, работающей асинхронно

Если песочница работала асинхронно, для завершения доступны два варианта. Во-первых, вы можете просто дождаться завершения Sandboxee и получить окончательный статус выполнения:

sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();

В качестве альтернативы вы можете завершить работу Sandboxee в любое время, но все же рекомендуется вызывать AwaitResult() , поскольку в это время Sandboxee может завершиться по другой причине:

s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();
,

6. Выход из песочницы

В зависимости от того, как вы запускаете песочницу (см. этот шаг ), вам необходимо настроить способ закрытия песочницы, а значит, и самого Sandboxee.

Выход из песочницы, работающей синхронно

Если песочница работала синхронно, то Run вернется только после завершения Sandboxee. Поэтому никаких дополнительных действий для прекращения не требуется. Фрагмент кода ниже демонстрирует этот сценарий:

Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();

Выход из песочницы, работающей асинхронно

Если песочница работала асинхронно, для завершения доступны два варианта. Во-первых, вы можете просто дождаться завершения Sandboxee и получить окончательный статус выполнения:

sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();

В качестве альтернативы вы можете завершить работу Sandboxee в любое время, но все же рекомендуется вызывать AwaitResult() , поскольку в это время Sandboxee может завершиться по другой причине:

s2.Kill();
sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();