2013-03-28 2 views
2

Мне просто интересно об этой проблеме: , если я могу использовать что-то вроде «ls -al | less», меньше должен иметь возможность ждать ввода от stdin. То, что я ожидал, произойдет после запуска команды «less», программа зависает и ждет ввода (как следствие вызова gets() или что-то в этом роде.)Как команда «less» получает вход stdin?

Но почему на самом деле оно показало сообщение об ошибке " Отсутствует имя файла («less --help» для справки) «конец завершен?

спасибо.

+0

Смотрите также связанные вопрос http://stackoverflow.com/questions/1441251/less-gets-keyboard-input-from-stderr/1441368#1441368 –

ответ

2

less команда может проверять как argc>1, так и stdin быть связанными с файлом (не tty).

+0

Не могли бы вы объяснить, как он проверяет, связан ли stdin с файлами? Я думаю, это та часть, которую я хочу знать. Спасибо. – babel92

+1

http://www.thinkage.ca/english/gcos/expl/c/lib/istty.html – kev

+3

Мы, старожилы C/Unix, помним ошибку новобранец, делая печать между ошибкой и попыткой превратить errno в сообщении, потому что printf выполнил бы вызов, чтобы определить, нужно ли это делать буферизацию строки или нет, поэтому все ваши errno скажут вам: «ENOTTY» (не TTY). –

0

Меньшая команда не разработана в этом отношении. Когда вы выполняете команду в bash, она отображает всю информацию сразу. Команда less используется для отображения STDOUT команды или содержимого файла по одному экрану за раз.

0
$ ls -al | less 
total 16 
drwxrwxr-x 4 hdante hdante 4096 Nov 24 17:11 . 
drwxr-xr-x 88 hdante hdante 4096 Mar 24 22:14 .. 
drwxrwxr-x 2 hdante hdante 4096 Nov 25 01:55 new 
drwxrwxr-x 3 hdante hdante 4096 Nov 24 18:27 old 
(END) 

Это работает. Что-то не так с твоим меньшим. Из менее ручных страниц:

http://www.linuxmanpages.com/man1/less.1.php https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/less.1.html

Руководство описывает имя файла в качестве факультативных.

Намеки диагностировать проблему:

  • попробовать псевдоним | grep less, чтобы увидеть, изменяется ли команда
  • try set | Grep МЕНЬШЕ, и проверьте скрипты руководят LESSCLOSE и LESSOPEN
+0

Нет, это сообщение об ошибке было результатом работы «меньше». Я не уточнил ... – babel92

Смежные вопросы