我想用这样的 Linux shell 脚本创建一个应用程序——但能做到吗?
此应用程序将创建一个包含数据的树。树应该加载到内存中。树(加载在内存中)可以从任何其他外部 Linux 脚本中读取。
- 是否可以使用 Linux shell 来实现?
- 如果是,你该怎么做?
- 有什么简单的例子吗?
问题中存在大量误解。
每个进程通常都有自己的内存;没有简单的方法可以将“树”加载到一个进程的内存中并使其可用于所有其他进程。您可能会设计一个相关程序系统,该系统知道包含树的共享内存段(不知何故 - 那里有一个问题),但仅此而已。它们是特殊程序,而不是一般的 shell 脚本。这不符合您的“任何其他外部 Linux 脚本”要求。
您正在寻找的东西在 Linux shell 基础架构中根本不可用。这回答了你的第一个问题;其他两个没有实际意义,因为第一个的答案。
我认为没有办法做到这一点,就好像你想保留以下所有要求:
您将不得不放弃至少一项要求:
放弃 shell 脚本 req - 在 C 中构建它以作为 Linux 进程运行。我只明白这一点,说这不是微不足道的
放弃内存请求 - 您可以序列化树并将数据保存在临时文件中。只要文件很小并且性能瓶颈不在访问树周围,这就会起作用。好消息是您可以跨终端/来自外部脚本使用数据
放弃外部脚本的可用性 req - 从技术上讲,您可以构建一个脚本并通过采购它来运行它,以将表示树的许多(阅读:一堆)变量添加到您当前的 shell 会话中。
这些替代方案都不是很好,但如果你不得不选择一个,2 号可能是问题最少的。
这里有一个相关的讨论。他们使用共享内存设备/dev/shm,而且表面上它适用于多个用户。至少,值得一试:
编辑:刚刚在 Ubuntu 上与两个用户一起尝试过 - 看起来像一个普通目录,并且真正适用于正确的 chmod。
也可以看看:
http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html