On a normal file, unless it’s NFS with a special mount option, read() and write() never return partial results, which means that many programs can’t handle it.
Even modern async/await/promise/future systems frequently have no reliable way to express partial success.
But read() and write() return the number of bytes actually read or written. So actually they are, or should be...