3 ms·
You need to sync twice because Unix is dumb: "According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before t
by wmf 11mo ago
You need to sync twice because Unix is dumb: "According to the standard specification (e.g., POSIX.1-2001), sync() schedules the writes, but may return before the actual writing is done." https://man7.org/linux/man-pages/man2/sync.2.html https://man7.org/linux/man-pages/man2/sync.2.html
- 1718627440 11mo ago> Unix is dumb I don't know. Now async I/O is all the rage and that is the same idea.
- marcosdumay 11mo agoThe syscall is literally called "sync", though.
- 1718627440 11mo agoI think it is a way of the OS to shoehorn async into a synchronously written application.
- wmf 11mo agoIf they had a sync() system call and a wait_for_sync_to_finish() system call then you'd be right. But they didn't have those.
- 1718627440 11mo agohttps://news.ycombinator.com/item?id=46268127 https://news.ycombinator.com/item?id=46268127 (To quote yourself :-) )
- amelius 11mo agoThen how do you know the writes are done after the second sync?
- wmf 11mo agoAFAIK multiple syncs can't happen at the same time so the second sync implicitly waits for the first one to complete.
- amelius 11mo agoIf it was that simple, then why doesn't sync just do 2x sync internally?
- wakawaka28 11mo agoIf I had to guess, it is just extra work to do it twice, and you may not need to wait for it for some use cases. The better way would be to add a flag or alternative function to make the sync a blocking operation in the first place.
- wmf 11mo agoWhy is creat() missing the e? Why does an FTP server connect back to the client?