не удалось найти имя файла в каталоге, используя имя файла в качестве переменной из временного файла

Успешный вызов openвозвращает наименьшее число в качестве файлового дескриптора, который еще не используется.

Таким образом, если openвозвращает 4, это означает, что файловые дескрипторы 0 -3 уже используются. Поскольку forkдает те же файловые дескрипторы дочернему элементу, у дочернего элемента также будет использоваться fd 0 -3 и свободный fd 4, поэтому два успешных вызова openв родительском и дочернем элементах сразу после forkвернет тот же номер. Но если родитель или дочерний элемент открывали или закрывали файлы после fork, числа могут быть другими.

В общем, вы не должны полагаться на предсказание fd вызова open, если только у вас нет веских причин и вы не уверены, что можете предсказать его правильно.

0
21.05.2020, 12:06
1 ответ

Вы можете написать zshскрипт, например:

#! /bin/zsh -
# list of files to find on stdin or in file arguments, LF delimited
to_find=(${(f)"$(cat -- "$@")"})
in_current_dir=(*(ND))

# print files in both lists, LF delimited:
print -rC1 -- ${in_current_dir:*to_find}
0
28.04.2021, 23:13

Теги

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