xargs 如何知道 stdin 输入何时结束,以便开始处理它?

Tim*_*Tim 7 xargs

阅读Stephen Kitt 的回复后,xargs 在处理任何输入之前等待接收 stdin 输入,例如将其拆分为参数。

xargs 如何知道 stdin 输入何时结束,以便开始处理它?

-E用于指定标准输入输入的结束?

没有它,xargs 怎么知道它什么时候结束?有超时吗?

Ste*_*itt 13

要读取其输入,请xargs使用该read函数(另请参阅相应的 Linux 联机帮助页)。

read将文件描述符中的下一个可用数据读入调用程序指定的内存区域。正如 所使用的那样xargsread等待直到数据可用,或者发生错误,或者它确定不再有数据可用。在每种情况下,它分别返回一个正整数、-1 或 0。

要确定何时完成读取其输入(其标准输入或-a选项指定的输入),请xargs查找指定的文件结束标记(如果使用了该-E选项),或从read.

您可以通过运行查看此操作

printf '%s ' {1..1024} | strace -e read xargs -s 2048 -x
Run Code Online (Sandbox Code Playgroud)