Использование sendfile() для двух файлов mmaped (linux)

Можно ли использовать системный вызов linux sendfile() для отправки части файла из одного файла mmaped в другой файл mmaped?


person osgx    schedule 29.03.2010    source источник


Ответы (1)


Из sendfile(2):

Presently (Linux 2.6.9): in_fd, must correspond to a file which supports mmap()-like operations (i.e., it cannot be a socket); and out_fd must refer to a socket.

Так что похоже ответ - нет.

Редактировать

Кажется, я понимаю, что вы сейчас ищете. Проверьте splice(2).

person Nikolai Fetissov    schedule 29.03.2010
comment
Но что с более свежими ядрами? mans в linux очень плохо поддерживаются (по сравнению с любым коммерческим unix, линейкой solaris, hpux и т. д.) - person osgx; 29.03.2010
comment
Я не думаю, что что-то изменилось, надо заглянуть в первоисточник, но вопрос, который я забыл задать - что вы пытаетесь сделать? Вы не можете решить эту проблему с общей памятью? Или это было просто любопытство? - person Nikolai Fetissov; 29.03.2010
comment
Я хочу сделать нулевую копию. memcpy работает слишком медленно. - person osgx; 29.03.2010
comment
Если это в том же поле, просто работайте с общими страницами из нескольких процессов. Что-то должно быть записано в память, а затем что-то должно быть считано из нее в любом случае. - person Nikolai Fetissov; 29.03.2010