在Unix系统中,可以通过从/ proc读取数据来动态监视系统。我希望通过动态地将“当前状态”保存到文件中来在我的应用程序中实现这种监视。但是,我不希望IO延迟我的程序,所以最好将文件设置为虚拟,即不存储到磁盘中但实际上存储在内存中。有办法吗?谢谢你的提示!
答案 0 :(得分:3)
为什么不使用共享内存和信号量。做一个'男人shmget'作为起点。
答案 1 :(得分:1)
作为替代方案,您可以将应用程序设置为套接字服务器。通过这种方式,只有在被要求时才能让它响应状态信息(甚至不需要继续使用当前状态更新存储区),并且还可以从远程机器控制程序。如果状态本身不是大量数据,我认为这是最灵活的解决方案。
如果你也让你的应用程序响应HTTP请求(我不是指处理所有http协议的可能性,只是你想要支持的请求),那么你也可以避免写一个客户端,如果你想写无论如何,找到能够做到这一点的图书馆和程序员可能更容易。
让它听80端口,你可以通过互联网检查你的程序没有努力通过防火墙:-)(好吧......假设程序本身可以通过互联网到达,但即便如此,这是一个简单的要求系统管理员常见的事情。)
答案 2 :(得分:0)
试试FUSE。它对于编写虚拟文件系统特别有用。它上面已经有很多文件系统。
答案 3 :(得分:0)
我不知道你的具体要求,所以我只能猜测,但linux下的每个文件都放在/ dev / shm中。但这并不意味着它没有做I / O,只是I / O更快。如果您不想通过文件描述符或类似方法进行I / O,请按照其他人的建议进行操作并使用共享内存段,但这对每个人来说都比较难读。让其他程序打开并读取一个文件,然后调用程序中的某些函数(由内核空间中的/ proc完成)是不可能的。也许文件系统套接字或fifo更适合您的需求(例如,当你有一个select /(e)轮询例程时)。当您完全控制系统时,tmpfs也可能对您有用。