HappyFace Asked: 2018-11-23 11:23:54 +0800 CST2018-11-23 11:23:54 +0800 CST 2018-11-23 11:23:54 +0800 CST 海绵(来自 moreutils)如何工作? 772 海绵可以“吸收”标准输入并将其以原子方式写入文件,从而可以执行cat f|sponge a. 我想知道它究竟是如何做到这一点的。它如何知道输入何时完成? shell io-redirection 1 个回答 Voted Best Answer thrig 2018-11-23T11:31:41+08:002018-11-23T11:31:41+08:00 strace或类似的将显示 使用的系统调用sponge,这可能是从标准输入输出到临时文件write(2)的输入read(2),然后rename(2)在输入结束时到该临时文件到所需的输出文件名。当read(2)调用失败或返回0(表示文件结束)时输入结束,此时sponge可以进行重命名。
strace
或类似的将显示 使用的系统调用sponge
,这可能是从标准输入输出到临时文件write(2)
的输入read(2)
,然后rename(2)
在输入结束时到该临时文件到所需的输出文件名。当read(2)
调用失败或返回0
(表示文件结束)时输入结束,此时sponge
可以进行重命名。