我想使用类似于这样的Linux shell脚本创建一个应用程序 - 但是它可以完成吗?
此应用程序将创建包含数据的树。该树应在内存中加载。该树(加载到内存中)可从任何其他外部Linux脚本中读取。
- 是否可以使用Linux shell实现?
- 如果可以,如何实现?
- 是否有简单的示例?
我想使用类似于这样的Linux shell脚本创建一个应用程序 - 但是它可以完成吗?
此应用程序将创建包含数据的树。该树应在内存中加载。该树(加载到内存中)可从任何其他外部Linux脚本中读取。
这个问题中存在大量误解。
每个进程通常都有自己的内存,没有简单的方法将“树”加载到一个进程的内存中并使其对所有其他进程可用。您可以设计一套相关程序,它们了解包含树的共享内存段(不知何故存在问题),但仅此而已。它们将是特殊程序,而不是通用的shell脚本。这并不符合您对“任何其他外部Linux脚本”的要求。
您正在寻找的在Linux shell基础设施中根本不存在。这回答了您的第一个问题;鉴于第一个问题的答案,其他两个问题都不重要。
我认为没有办法同时满足以下所有要求:
你必须放弃至少一个要求:
放弃shell脚本要求- 用C语言构建它以作为Linux进程运行。我只能理解到这一点,因为这是非常困难的。
放弃内存要求- 你可以序列化树并将数据保存在临时文件中。只要文件很小且性能瓶颈不在于访问树,就可以正常工作。好消息是你可以从终端/外部脚本中使用数据。
放弃外部脚本的可用性要求- 你可以在当前shell会话中添加许多(即:一堆)表示树的变量来构建脚本并运行它。
这些替代方案都不是很好,但如果你必须选择一个,第二个可能是最不麻烦的。
这里有一个相关的讨论。他们使用共享内存设备/dev/shm,表面上它可以为多个用户工作。至少值得一试:
编辑:我刚在Ubuntu上尝试了两个用户,看起来像是一个普通的目录,并且在正确的chmod下真的有效。
另请参阅:
http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html