有没有一种方法可以让我的内容显示为文件,但在读取时执行一些代码“即时”填充文件的内容?
类似于 FIFO/命名管道,但无需手动启动写入过程。
或者像网络服务器上的 CGI,但在本地文件系统上。
编辑:
为了防止自己“为什么我想要这个”-怀疑:
我希望它能够拥有一个音频文件,其内容是在访问时生成的,然后传递到音频播放器。并且它不应该是流式传输的,因为当音频播放器访问时,应该知道音频的长度。
答案1
如果您愿意进行一些编码,扇通知系统调用允许您编写一个程序,该程序将拦截对某个安装点下的任何文件的读取,并在返回数据之前替换或操作数据。请参阅man fanotify
C 代码示例。
或者,您可以安装一个保险丝文件系统,请参阅man fuse
,它允许您通过用户空间程序实现文件系统。例如,curlftpfs
(参见其手册页)将文件访问转换为curl
ftp 调用。