Вы можете использовать open
, fstat
, mmap
, madvise
и write
, чтобы создать очень эффективную команду cat.
Если вы используете Linux, вы можетеиспользуйте open
, fstat
, fadvise
и splice
, чтобы сделать еще более эффективную команду cat.
Вызовы advise должны указать флаги SEQUENTIAL, которые сообщат ядру, чтобы они выполняли агрессивное чтение.вперед по делу.
Если вы хотите быть вежливыми с остальной частью системы и минимизировать использование буферного кэша, вы можете сделать свою копию кусками по 32 мегабайта или около того и использовать флаги advise DONTNEED на деталяхуже прочитано.
Примечание:
Вышеуказанное будет работать, только если источником является файл.Если fstat не может предоставить размер, вы должны использовать выделенный буфер и read
, write
.Вы также можете использовать splice
.