甲文件的URI方案使得能够以指定的URI到本地存储的文件,如file:///home/demo/sample
。
可以用来指定stdin
吗?
例如,使用 CURL:
curl file:///home/demo/sample
Run Code Online (Sandbox Code Playgroud)
显示文件的内容;
echo "Hello" | curl file:///dev/fd/0
Run Code Online (Sandbox Code Playgroud)
给出一个空结果,而我希望它显示“你好”。顺便一提:
echo "Hello" | cat /dev/fd/0
Run Code Online (Sandbox Code Playgroud)
实际上向输出显示“Hello”。
我应该把什么放在file://
目标之后stdin
?
上下文:我正在试验Motion,它能够从 HTTP URI 或指定为 的文件中读取数据file://
,但似乎没有直接从中读取视频流的选项stdin
(以及近两年前提出的相关问题从未被回答)。我希望能够欺骗应用程序认为它读取了一个文件,而实际上它正在从ffmpeg
.
curl file:///dev/fd/0
Run Code Online (Sandbox Code Playgroud)
是curl
从文件描述符 0 ( stdin
)读取的正确方法。
取任何可读的文本文件,做
<theTextFile.txt curl file:///dev/fd/0
Run Code Online (Sandbox Code Playgroud)
它应该像cat
.
您的问题是“如何从管道中读取 curl ?” 恐怕答案是:patch curl 的源代码。
如果您分析顶部示例中的 curl 轨迹,您将看到它mmap
是文件。mmap
如果文件是管道,则 ing 将不起作用。如果使用卷曲定期read
和write
系统调用,不会有什么区别<theTextFile.txt curl file:///dev/fd/0
和cat theTextFile.txt curl | file:///dev/fd/0
,这是应该的,海事组织。