海绵(来自 moreutils)如何工作?

海绵(来自 moreutils)如何工作?

Sponge 可以“吸收”标准输入并将其自动写入文件,从而使人们能够执行cat f|sponge a.我想知道它到底是如何实现这一目标的。它如何知道输入何时完成?

答案1

strace或类似的将显示 所使用的系统调用sponge,这可能是write(2)输入read(2)从标准输入输出到临时文件,然后到rename(2)当输入结束时,将该临时文件更改为所需的输出文件名。当read(2)调用失败或返回0(表示文件结束)时输入结束,此时sponge可以进行重命名。

相关内容