Shell

海綿(來自 moreutils)如何工作?

  • November 23, 2018

海綿可以“吸收”標準輸入並將其以原子方式寫入文件,從而可以執行cat f|sponge a. 我想知道它究竟是如何做到這一點的。它如何知道輸入何時完成?

strace或類似的將顯示 使用的系統呼叫sponge,這可能是從標準輸入輸出到臨時文件write(2)的輸入read(2),然後rename(2)在輸入結束時到該臨時文件到所需的輸出文件名。當read(2)呼叫失敗或返回0(表示文件結束)時輸入結束,此時sponge可以進行重命名。

引用自:https://unix.stackexchange.com/questions/483524