阅读Stephen Kitt 的回复后,xargs 在处理任何输入之前等待接收 stdin 输入,例如将其拆分为参数。
xargs 如何知道 stdin 输入何时结束,以便开始处理它?
是-E
用于指定标准输入输入的结束?
没有它,xargs 怎么知道它什么时候结束?有超时吗?
Ste*_*itt 13
要读取其输入,请xargs
使用该read
函数(另请参阅相应的 Linux 联机帮助页)。
read
将文件描述符中的下一个可用数据读入调用程序指定的内存区域。正如 所使用的那样xargs
,read
等待直到数据可用,或者发生错误,或者它确定不再有数据可用。在每种情况下,它分别返回一个正整数、-1 或 0。
要确定何时完成读取其输入(其标准输入或-a
选项指定的输入),请xargs
查找指定的文件结束标记(如果使用了该-E
选项),或从read
.
您可以通过运行查看此操作
printf '%s ' {1..1024} | strace -e read xargs -s 2048 -x
Run Code Online (Sandbox Code Playgroud)