Почему некоторые исполняемые файлы останавливаются в текстовом файле? [дубликат]Linux

Anonymous
Почему некоторые исполняемые файлы останавливаются в текстовом файле? [дубликат]

Сообщение Anonymous »

Недавно я столкнулся с проблемой, которую решил, не понимая основного механизма. Таким образом, название вопроса может быть неясным. Ситуация следующая:
  • Для следующего скрипта:

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

while read l; do
echo "$l"
end < file.csv
Это правильно отразит все строки в моем файле.
  • Однако это:

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

while read l; do
echo "$l"
executable --input $l
end < file.csv
правильно отобразит первую строку моего файла, но чтение файла прекратится, поскольку чтение вернет 0 (или любое другое значение, заставляющее цикл останавливаться). Исполняемый файл, который я использую, — las2las64.exe, если это кому-то поможет.
Исправление, которое я нашел, — это использование read -u 10, а также , чтобы использовать файловый дескриптор с номером 10.
Чего я не понимаю, так это того, почему происходит такое поведение? Я предполагаю, что исполняемый файл «перезаписывает» или использует стандартный ввод, не возвращая его вызывающей стороне. Спасибо всем, кто будет достаточно любезен, чтобы объяснить мне это.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -text-file

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