Как должен работать системный вызов sendfile() FreeBSD/DragonFlyBSD?

  1. Estás usando las comillas incorrectas en el comando de fecha. Está utilizando comillas simples "rizadas"(‘...’)en lugar de acentos graves (`...`), pero use $(...)en lugar de acentos graves.
  2. No se permiten espacios alrededor de =para una asignación de variable
  3. El +no debe ir seguido de un espacio.
  4. Usar:currentTime=$( date +%k%M )

    También el nombre de la función que define(check_time_tu_run)
    no es el nombre de la función que llama(check_time_to_run)

    Hay otros errores :pegue su código enhttps://www.shellcheck.netpara obtener más ayuda.

0
11.07.2019, 16:50
1 ответ

Аргументы offsetи nbytesне описывают одно и то же. Наоборот, они описывают, где начинать и где заканчивать копирование байтов из файла соответственно.

Если ваш файл имеет размер 131 072 байта (128 КБ )и вы используете offsetиз 16 384 и nbytesиз 32 768, тогда sendfile()скопирует с позиции 16 384 на позицию 49 152 в файле, всего 32 КБ (, указанное в nbytes), начиная с offset.

Если вы используете offsetиз 114 688 и nbytesиз 32 768, то sendfile()скопирует из позиции 114 688 в конец файла, в позицию 131 072, всего 16 КБ. Поскольку файл оказался короче ожидаемого nbytes, sendfile()отправит меньше данных, чем запрошено.

Если вы используете offsetиз 147 456 и nbytesиз 32 768, то sendfile()отправит 0 байтов. Если начало находится за концом файла, байтов для копирования не будет, поэтому он просто ничего не отправит.

Наконец, есть особый случай, когда nbytesустановлен на 0, что приведет к копированию всего содержимого файла, поэтому, если вы используете offsetсо значением 0 и nbytesсо значением 0, тогда sendfile()будет отправлять всего 131 072 байта (128 КБ )для всего файла.

1
28.01.2020, 02:39

Теги

Похожие вопросы