6. Выход из песочницы
В зависимости от того, как вы запускаете песочницу (см. этот шаг ), вам придется скорректировать способ завершения песочницы, а следовательно и Sandboxee.
Выход из песочницы, работающей синхронно
Если песочница работала синхронно, то Run вернётся только после завершения работы Sandboxee. Поэтому никаких дополнительных действий для завершения не требуется. Фрагмент кода ниже иллюстрирует этот сценарий:
Sandbox2::Result result = s2.Run();
LOG(INFO) << "Final execution status: " << result.ToString();
Выход из песочницы, работающей асинхронно
Если песочница работала асинхронно, возможны два варианта завершения. Во-первых, можно просто дождаться завершения работы песочницы и получить окончательный статус выполнения:
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();