写我自己的'一切都是文件'界面

时间:2010-01-14 21:55:04

标签: linux unix posix

我想以'一切都是文件'的方式公开我的程序的设置和统计信息 - 有点/ proc /和/ sys /如何工作。

作为一个例子,想象一下apache2有这种类型的接口。然后你就可以做这样的事情(假设):

cd /apache2/virtual_hosts
mkdir 172.20.30.50
cd 172.20.30.50
echo '/www/example1' > DocumentRoot
echo 'www.example1.com' > ServerName
echo 1 > control/enabled
cat control/status
   enabled true
   uptime 4080
   hits 0

现在,有没有关于如何做到这一点的教程或类似内容?我主要是寻找'假装成文件或目录'的技巧。我在linux,POSIX或其他更便携的方法上会更好,但不是必需的。

3 个答案:

答案 0 :(得分:10)

在Linux上,看一下Fuse:在用户空间程序中实现一个功能齐全的文件系统。

  • 简单库API
  • 简单安装(无需修补或重新编译内核)
  • 安全实施
  • 用户空间 - 内核界面非常高效
  • 非特权用户可以使用
  • 运行Linux内核2.4.X和2.6.X
  • 随着时间的推移证明非常稳定

查看兼容的平台here。就教程而言,我遇到的一个好的是 here

答案 1 :(得分:4)

除了FUSE,另一种解决方案是导出9p文件系统。例如,wmii就是这样做的。

答案 2 :(得分:1)

执行此操作的方法可能只是使用“真实”文件并使用更改通知库(首选inotify)来检测他们何时更改并相应地更新您的行为。

/ proc和/ sys用于内核用户通信,而不是真正用于用户空间程序的IPC - 你应该使用命名管道,套接字,共享内存等。

(ab)在这种情况下使用FUSE并不是一个好主意,我认为。