【问题标题】:Where to save my c++ program's data in linux file system to be able to access it?在哪里将我的 c++ 程序的数据保存在 linux 文件系统中以便能够访问它?
【发布时间】:2019-08-27 19:24:06
【问题描述】:

好的,我正在创建一个 C++ 程序,目前在 linux 上。该程序将数据保存到需要访问和写入的文件中。我正在将我的程序安装到 /usr/local/bin ,但是程序相关/必要的文件通常存储在哪里?

将文本文件放入 /etc 不起作用,因为除非我使用 sudo 权限调用我的程序,否则我无法写入该文件。同样,出于相同的确切原因,带有我的程序目录的 /usr/local/share 也不起作用。

什么是典型的解决方案或人们如何解决这个问题?我应该在哪里存储我的程序需要读取和写入的文件?我不确定我的问题措辞是否有误,但我真的无法在网上找到对此的任何见解。

【问题讨论】:

  • 通常这类文件放在当前用户主目录的某个隐藏文件夹中。
  • 如果每个用户,在当前用户的主目录下。如果是全局的,在 /etc/someidorguidorappname 下
  • 我非常了解如何使用 linux 并且在命令行中非常高效。显然我不允许在 C++ 中使用或编写代码,因为我并不完全知道在哪里存储我的关联文件......感谢您的无意义贡献并帮助编程社区比它已经更不受欢迎和更少帮助是
  • 实际上提出这样的问题意味着您了解designconvention的重要性,否则您可以将您的应用数据保存在任何地方并且它可以工作。
  • /usr/local/share/myprog/ 数据可能吗?

标签: c++ linux


【解决方案1】:

你说你在命令行中很有效率。因此,假设您正在编写一些 shell 脚本而不是 C++ 来完成这项工作,那么您会将其配置和数据文件存储在哪里?

概念不会因语言而改变。

如果该工具是全局工具,用户通常只会在每台(虚拟)机器上运行一个,您可以将只读配置放入 /etc/<tool>,将数据放入 /var/lib/<tool>,以 root 身份运行,但尽早放弃特权。

如果该工具是每个用户的,其中多个用户可能希望同时使用它并可能具有不同的设置,您可以在 /etc 中进行全局配置,并在 ~/.config/<your-app> 中进行用户覆盖。您的数据将进入~/.local/<your-app>

而且这些都不会因语言而异。改变的是你如何拼凑字符串以形成你想要阅读的路径,你如何阅读文件等,以及跨平台(Windows 和 Mac 的相同问题会给出不同的答案)但这不是你的问题需要。

我认为您走在正确的轨道上,我认为与“C++”部分有关的只是一些混淆,这实际上并没有改变问题的答案。

【讨论】:

  • 我包含 C++ 部分的唯一原因是如果我需要在我的代码中使用 getuid 类型的方法,或者在访问和操作文件时需要类似的东西。这就是它的程度。我最终在我的主目录下创建了一个隐藏目录。
猜你喜欢
  • 2014-02-13
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
相关资源
最近更新 更多