A文件 URI 方案可以指定本地存储的文件的 URI,例如file:///home/demo/sample
.
可以用来指定吗stdin
?
例如,使用 CURL:
curl file:///home/demo/sample
显示文件的内容;
echo "Hello" | curl file:///dev/fd/0
给出空结果,而我希望它显示“Hello”。顺便一提:
echo "Hello" | cat /dev/fd/0
实际上在输出中显示“Hello”。
我应该在file://
目标之后放什么stdin
?
背景:我正在尝试运动它能够从 HTTP URI 或指定为 的文件读取数据file://
,但似乎没有直接从中读取视频流的选项stdin
(并且一个相关的问题近两年前提出的问题从未得到答复)。我希望能够欺骗应用程序认为它读取了文件,而实际上它正在读取ffmpeg
.
答案1
curl file:///dev/fd/0
curl
是从文件描述符 0 ( )读取的正确方法stdin
。
获取任何可读的文本文件,执行
<theTextFile.txt curl file:///dev/fd/0
它应该像 一样工作cat
。
你的问题是“如何让curl从管道中读取?”恐怕答案是:补丁curl的源代码。
如果您分析上面示例中的curl strace,您将看到它mmap
是文件。mmap
如果文件是管道,则 ing 将不起作用。如果curl 使用常规调用read
和系统调用,则 和write
之间不会有任何区别,这应该是这样的,IMO。<theTextFile.txt curl file:///dev/fd/0
cat theTextFile.txt curl | file:///dev/fd/0