moreutilsのスポンジはどのように機能しますか?

moreutilsのスポンジはどのように機能しますか?

Spongeは標準入力を「取って」ファイルに自動的に記録し、人々がそれを実行できるようにしますcat f|sponge a。これが正確にどのように行われるかを知りたいです。入力が完了したらどうすればわかりますか?

答え1

straceまたは同様のシステムコールが表示されますspongewrite(2)入力するread(2)標準入力から一時ファイルに出力してからrename(2)入力が終わったら、この一時ファイルを目的の出力ファイル名に変更します。read(2)呼び出しが失敗または返されると0(ファイルの終わりを示す)、入力が終了し、sponge名前を変更できます。

関連情報