где я могу хранить данные / C ++, Linux, QtCreator - PullRequest
1 голос
/ 18 июня 2020

У меня есть небольшая программа в QtCreator, но где я могу хранить данные от пользователя, если эта программа не имеет прав root для создания каталога, например, в / usr / bin / myappname. У меня не может быть привилегий root, потому что моя программа распространяется как appimage, и мне нравится запускать этот образ как обычный пользователь, а не root. возможно, я могу хранить данные в / home / user / myappname, но если у пользователя есть другой язык в его домашнем каталоге ОС, не обязательно существовать.

1 Ответ

1 голос
/ 18 июня 2020

где я могу хранить данные / C ++

, если эта программа не имеет root привилегий

Один из подходов состоит в том, чтобы менеджер пакетов создавал каталоги с привилегии суперпользователя при установке программы. Такой подход работает, только если программа установлена ​​с помощью диспетчера пакетов. Это типичный выбор для таких демонов, как серверы.

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

Точное место, где вы должны хранить данные, зависит от системы, в которой вы запускаете процесс. В разных операционных системах используются разные соглашения. Это также зависит от того, какие данные вы храните. Это временно? Это зависит от архитектуры процессора? Это для настройки? Это файлы журнала?

Для Linux и других систем POSIX следуйте спецификации XDG Base Directory . Также изучите Стандарт иерархии файловой системы . Для других систем обратитесь к их документации, чтобы узнать о передовых методах.

Я могу хранить данные в / home / user / myappname, но если у пользователя есть другой язык в его домашнем каталоге ОС, не обязательно существовать.

Не предполагайте путь к домашнему каталогу. Используйте переменную среды HOME.

...