Закрытие дескриптора файла,> &-по сравнению с <&-

Можно использовать make (без установки) для компиляции источников протестируйте их и т.д. стр. И затем можно использовать make install помещать новые файлы типа "build" в систему в целом.

50
25.05.2014, 02:36
3 ответа
[1178648] Вы можете закрыть дескриптор файла, используя оба варианта [1179106]<&-[1179107] и [1179108]>&-[1179109], [1179110]bash[1179111] разберет два одинаковых синтаксиса.

sfc /scannow

Из файла [1179112]y.tab. c[1179113] в исходном коде [1179114]bash[1179115]:

49
27.01.2020, 19:33
[1178542] Насколько я вижу, [1178996]exec 3>&-[1178997] и [1178998]exec 3<&-[1178999] одинаковы и могут быть использованы на любом файловом дескрипторе, независимо от того, как он был открыт. В соответствии с разделами 2.7.6 и 2.7.5 определения POSIX языка командной строки [1179000]Shell[1179001]:
2.7.5 Дублирование дескриптора входного файла

Оператор перенаправления:[1179005]. [1179006][n]<&word[1179007] [1179008][...SNIP...]

Если слово вычисляется в '-', файловый дескриптор n, или стандартный ввод, если n - не указанный, должен быть закрыт. Попытки закрыть дескриптор файла которая не открыта, не является ошибкой. Если слово оценивает что-то другое, поведение не определено.2.7.6 Дублирование дескриптора выходного файла Оператор перенаправления:[1179015] [1179016][n]>&word[1179017] [1179018][...SNIP...]

Если слово вычисляется в '-', файловый дескриптор n, или стандартный вывод, если n не указан, закрыт. Попытки закрыть дескриптор файла, который не открыт, не является ошибкой. Если слово оценивает что-то другое, поведение не определено.
Обратите внимание, что ни тот, ни другой ничего не указывает на то, как изначально был открыт дескриптор n файлов. Это согласуется с тем, что [1179022]close(2)[1179023] не заботится о том, как вы открыли файл.
Быстрый перебор:

против этого:

показывает, что в обоих случаях Бэш делает одно и то же. Два слегка интересных факта В разделе [1179344]bash man page о дублировании дескрипторов файлов[1179345] не упоминается, что [1179346][n]>&-[1179347] закрывает дескрипторы файлов.

В Bash-коде для обработки перенаправлений (redir.c) можно найти следующее:

738 /* XXX - что делать с [N]<&$w- где w не задан или равен нулю? ksh93 739 закрывает Н.

16
27.01.2020, 19:33

Пример понимания cuonglm закрытия FD '<>'.

Это цитата из Advanced Bash-Scripting Guide на http://tldp.org/LDP/abs/html/io-redirection.html

[j]<>filename
  #  Open file "filename" for reading and writing,
  #+ and assign file descriptor "j" to it.
  #  If "filename" does not exist, create it.
  #  If file descriptor "j" is not specified, default to fd 0, stdin.
  #
  #  An application of this is writing at a specified place in a file. 
  echo 1234567890 > File    # Write string to "File".
  exec 3<> File             # Open "File" and assign fd 3 to it.
  read -n 4 <&3             # Read only 4 characters.
  echo -n . >&3             # Write a decimal point there.
  exec 3>&-                 # Close fd 3.
  cat File                  # ==> 1234.67890
  #  Random access, by golly.
7
27.01.2020, 19:33

Теги

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