Как использовать 'кошку' или 'меньше' в зависимости от количества строки?

Ядро Linux повторно используемо (как все UNIX), который просто означает, что несколько процессов могут быть выполнены ЦП. Он не должен ожидать, пока чтение доступа к диску не обрабатывается смертельным медленным контроллером жесткого диска, ЦП может обработать некоторый другой материал, пока доступ к диску не закончен (который сам инициирует прерывание раз так).

Обычно прерывание может быть прервано другим прерыванием (вытеснение), это называют 'Вложенным Выполнением'. В зависимости от архитектуры существуют все еще некоторые критические функции, которые должны работать без прерывания (неупреждающего) путем завершенного отключения прерываний. На x86 они проходят некоторое время соответствующие функции (time.c, hpet.c) и некоторые xen материал.

Существует только два приоритетных уровня относительно прерываний: 'включите все прерывания', или 'отключают все прерывания', таким образом, я предполагаю, что Ваше "высокоприоритетное прерывание" является вторым. Это - единственное поведение, ядро Linux знает касающиеся приоритеты прерывания и не имеет никакого отношения к расширениям в реальном времени.

Если прерываемое прерывание (Ваше "низкоприоритетное прерывание") прервано другим прерыванием ("высоко" или "низко"), ядро сохраняет старый код выполнения прерванного прерывания и начинает обрабатывать новое прерывание. Это "вложение" может произойти многократно и таким образом может создать несколько уровней прерванных прерываний. Впоследствии, ядро перезагружает сохраненный код от старого прерывания и попыток закончить старую.

12
22.06.2012, 13:32
2 ответа

Дать Вам формулу, которая включает wc- основанная проверка:

(($(wc -l<input_file)<=$(tput lines))) && echo 'will fit' || echo 'not enough'

Существует a $LINES окружите переменную, которая может также использоваться:

(($(wc -l<input_file)<=LINES)) && echo 'will fit' || echo 'not enough'

Но $LINES обновляется только когда в командной строке. Для понимания, что я имею в виду выполните это и измените размер окна терминала во время sleep:

( sleep 3; echo $LINES; tput lines )
9
27.01.2020, 19:54
  • 1
    Спасибо, это имеет преимущество, что оно может быть настроено на использование less уже, если, например, 2/3 экрана использовались cat. –  Tobias Kienzler 22.06.2012, 14:57

Возможно, 'меньше-F file_to_read' является опцией: это выходит меньше, если окно достаточно отобразить весь файл и ожидать на пейджере, если это не имеет место

20
27.01.2020, 19:54
  • 1
    звучит хорошим, но это ничего не производит в этом случае, и коды выхода являются тем же в обоих случаях –  Tobias Kienzler 22.06.2012, 12:53
  • 2
    я просто пробую 'меньше-F/etc/passwd' и он отображает файл correctely (с или без пейджера). Вы правы, код возврата 0 в обоих случаях. –  Dom 22.06.2012, 13:44
  • 3
    Та команда работает согласно просьбе, но с незначительным незначительным сбоем: это очищает экран после отображения файла. Добавление -X опция остановит очистку, таким образом, короткие файлы будут отображены как cat делает. К сожалению, с -X экран не будет очищен ни один после отображения длинных, прокрученных файлов. –  manatwork 22.06.2012, 14:12
  • 4
    @manatwork это является большим, спасибо. Не очистка экрана на самом деле в порядке, так как это - то, чего (не) произошло бы если cat были названы также –  Tobias Kienzler 22.06.2012, 14:50

Теги

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