我有一个二进制文件(我无法修改),我可以:
./binary < file
Run Code Online (Sandbox Code Playgroud)
我也可以这样做:
./binary << EOF
> "line 1 of file"
> "line 2 of file"
...
> "last line of file"
> EOF
Run Code Online (Sandbox Code Playgroud)
但
cat file | ./binary
Run Code Online (Sandbox Code Playgroud)
给我一个错误。我不知道为什么它不适用于管道。在所有 3 种情况下,文件的内容都提供给二进制的标准输入(以不同的方式):
据我所知,二进制文件不应该注意到这 3 个之间的区别。有人可以解释为什么第三种情况不起作用吗?
BTW:二进制文件给出的错误是:
20170116/125624.689 - U3000011 无法读取脚本文件“”,错误代码“14”。
但我的主要问题是,具有这 3 个选项的任何程序有何不同。
下面是一些进一步的细节:我试图再次strace的 和实际上有一些错误ESPIPE(非法谋取)从lseek的 后面EFAULT(地址错误)从读取错误信息之前。 …