Файл отправки Linux иногда сообщает об ESPIPELinux

Ответить
Anonymous
 Файл отправки Linux иногда сообщает об ESPIPE

Сообщение Anonymous »

Я пишу небольшой файловый сервер. Я использовал обычное чтение/запись, но сейчас экспериментирую с sendfile(2).
Хотя он работает нормально в 100% случаев, и я иногда вижу приятное увеличение скорости в 2 раза ( примерно в 1/5 раза) sendfile() возвращает -1, а для errno установлено значение ESPIPE. ОС — Ubuntu 20.04.6, ядро ​​LTS 5.4.0. Вот фрагмент кода ключа (настройка и проверка ошибок удалены для краткости):

Код: Выделить всё

    int sock_fd = accept (svr_socket, (struct sockaddr *)&cli_socket, &cli_len);
const char *filename = "myfile";
int file_fd = open (filename, O_RDONLY);
struct stat stat_buf;
fstat (file_fd, &stat_buf);
size_t n_sent = 0;
ssize_t n_s = 0;
while ((n_s = sendfile (sock_fd, file_fd, NULL, stat_buf.st_size - n_sent)) > 0)
n_sent += n_s;
if (n_s < 0)
printf ("%s: sendfile: %ld 

Подробнее здесь: [url]https://stackoverflow.com/questions/78649031/linux-sendfile-sometimes-reports-espipe[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»