За действия по нажатию клавиш отвечает терминал или оболочка? [дубликат]

Вот версия Perl, использующая отрицательный просмотр вперед (?!ОРГАНИЗМ), чтобы выяснить, нужно ли нам выполнять подстановку. Флаги -p позволяют автоматически печатать

$ perl -pe 's/[[:blank:]]//g if /^(?!ORGANISM).*/' input.txt                                                             
Cat;Dog;Squirrel
ORGANISM Animalus terrus
Sequence:ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
0
19.06.2017, 14:27
1 ответ

Не совсем так. Сигналы и т. д. обрабатываются драйвером терминала, поэтому оболочка на самом деле не знает, нажали ли вы буквальный ctrl -C или отправили ему тот же сигнал с killиз другого окна, например.

Keystrokes -> Terminal -> Terminal driver -> Foreground process

Когда оболочка не является процессом переднего плана (, например, когда вы использовали ее для запуска интерактивной программы или вообще любого процесса переднего плана ), эта программа получает ввод с клавиатуры и любые сигналы от драйвера терминала..

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

3
28.01.2020, 02:25

Теги

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