sendfile в принципе не работает на ядрах 2.6.x? Судя по man sendfile всё должно работать, а у меня стабильно возвращает EINVAL. Ядро 2.6.18. Единственное, что нашёл по этому поводу: http://ilia.ws/archives/13-sendfile-syscall-and-why-the-2.6-linux-kernel-sucks!. html Благо, теперь появился новый способ быстрого копирования - с помощью splice(), с ним всё нормально работает. Тестовая программа: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/sendfile.h> #include <unistd.h> #include <fcntl.h> int main (int argc, char **argv) { int fd_in, fd_out; off_t offset; ssize_t last_sent; if (argc < 3) { fprintf (stderr, "2 arguments required\n"); return -1; } fd_in = open (argv [1], O_RDONLY); if (fd_in == -1) { perror ("open #1"); return -1; } fd_out = open (argv [2], O_WRONLY | O_CREAT); if (fd_out == -1) { perror ("open #2"); return -1; } offset = 0; for (;;) { last_sent = sendfile (fd_out, fd_in, &offset, 1 << 20); if (last_sent < 0) { perror ("sendfile"); return -1; } if (last_sent == 0) break; } fprintf (stderr, "OK\n"); return 0; }
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от roy
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от erDiZz
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Teak
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Системный вызов sendfile ??? (2008)
- Форум Как писать CD? ioctl? (2003)
- Форум non-blocking write (2011)
- Форум Sendfile (2) или моя тупость (2006)
- Форум stat() неправильно работает с cifs (2009)
- Форум Как изменить максимальное число открытых файлов ? (2006)
- Форум Help! Почему вызов ioctl FIONREAD для файла /dev/random завершается неудачей?! (2003)
- Форум Утилита для изменения аптайма (2008)
- Форум locks (2014)
- Форум Не получается написать прогу (2010)