где я могу хранить данные / C ++
, если эта программа не имеет root привилегий
Один из подходов состоит в том, чтобы менеджер пакетов создавал каталоги с привилегии суперпользователя при установке программы. Такой подход работает, только если программа установлена с помощью диспетчера пакетов. Это типичный выбор для таких демонов, как серверы.
Другой подход - хранить данные в домашнем каталоге пользователя, где процесс предположительно имеет право создавать каталоги. Это типичный выбор для интерактивных приложений.
Точное место, где вы должны хранить данные, зависит от системы, в которой вы запускаете процесс. В разных операционных системах используются разные соглашения. Это также зависит от того, какие данные вы храните. Это временно? Это зависит от архитектуры процессора? Это для настройки? Это файлы журнала?
Для Linux и других систем POSIX следуйте спецификации XDG Base Directory . Также изучите Стандарт иерархии файловой системы . Для других систем обратитесь к их документации, чтобы узнать о передовых методах.
Я могу хранить данные в / home / user / myappname, но если у пользователя есть другой язык в его домашнем каталоге ОС, не обязательно существовать.
Не предполагайте путь к домашнему каталогу. Используйте переменную среды HOME
.