1
書き込みが連続して4Kバイトをバッファに残すのはなぜですか?
私は基本的に次のコードを持っています: int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } サイズが1GBの場合は機能しますが、サイズが〜2GBの場合、一貫して4Kバイトが残ります。書き込みをループでラップしてバッファを上に移動することでこれを修正できますが、なぜそれが常に失敗するのか知りたいです。 たとえば、サイズが2147483648の場合、書き込みは2147479552のみを書き込み、4096は書き込みません。なぜこれが発生し、書き込みを常にループでラップすることが正しいのですか?
30
c
linux
system-calls