Вы можете использовать параметр смещения для счетчика чтения.
По данным справочной страницы
Если смещение не равно NULL, то оно указывает на переменную, содержащую смещение файла, с которого sendfile () начнет чтение данных из in_fd. Когда sendfile () вернется, эта переменная будет установлена на смещение байта, следующего за последним прочитанным байтом. Если смещение не равно NULL, то sendfile () не изменяет текущее смещение файла in_fd; в противном случае текущее смещение файла корректируется с учетом количества байтов, считанных из in_fd.
count - это количество байтов, которое нужно скопировать между дескрипторами файла.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Если передача прошла успешно, возвращается число байтов, записанных в out_fd. В случае ошибки возвращается -1 и значение errno устанавливается соответствующим образом.
и yes означает, что возвращаемое значение 0 означает отсутствие данных, скопированных в сокет записи.