Я использую LXC через C API, и просто скопировали и вставили пример кода (как показано в этой ссылке, но заменяя main
имя функции с моим собственным). Затем, вызывая это из другого блока кода в моей программе, я не могу заставить контейнер запускаться правильно.
Призыв к start
просто возвращает ложь. Если я изменю второй параметр, чтобы начать с 0 (подразумевая, что lxcinit
следует использовать вместо / sbin / init), затем запуск «завершается успешно», но состояние контейнера сразу устанавливается STOPPED
и поэтому я не могу прикрепить к контейнеру.
Попытка получить логи, установив:
c->set_config_item(c, "lxc.logfile", "/home/user/lxc-log.log");
c->set_config_item(c, "lxc.logpriority", "TRACE");
c->set_config_item(c, "lxc.console.logfile", "/home/user/lxc-log2.log");
c->set_config_item(c, "lxc.console.logpriority", "TRACE");
Просто выдает пустые файлы.
Думая, что это может быть связано с еще одна проблема, которую я видел, Я также попытался установить:
c->set_config_item(c, "lxc.aa_allow_incomplete", "1");
Создание отдельной программы на C ++ и ее компиляция работает как чудо, но когда я пытаюсь вызвать ее из другой программы, просто добавив функцию и вызвав ее (в частности, универсальный проект), Я не могу заставить его работать должным образом.
Как оказалось, мне удалось решить эту проблему, отключив два пакета, которые были включены как часть более крупного проекта tcmalloc и asan.
Других решений пока нет …