прерывание интерпретации lua без выхода ctrl -c

Я запускаю код из книги по программированию на Lua ... http://www.lua.org/pil/3.6.html

когда я запускаю этот код в интерпретаторе терминала ... он продолжает читать ввод навсегда ...

list = nil
    for line in io.lines() do
      list = {next=list, value=line}
end

Ctrl C возвращает меня в командную строку / bash. Есть еще одна команда, которую нужно сломать? Как мне прервать / вернуться из фрагмента кода lua, не выходя из интерпретатора?


person Punkroku    schedule 12.09.2013    source источник
comment
Приносим извинения за задержку с выражением благодарности, мой брат сломал монитор моего компьютера. Ctrl D был правильным ответом.   -  person Punkroku    schedule 10.10.2018


Ответы (3)


Нажимая Ctrl-C в Unix-подобной системе, вы отправляете своему процессу сигнал SIGINT, который по умолчанию завершает процесс.

Ваша программа продолжает чтение из ввода вечно, потому что она блокирует вызов io.lines(), который продолжает чтение из стандартного ввода. Чтобы прервать его, отправьте своему терминалу EOF, это делается нажатием Ctrl-D в Unix-подобной системе.

В Windows ключ для отправки EOF - это Ctrl-Z.

person Yu Hao    schedule 13.09.2013
comment
Спасибо. Ctrl + D - это то, что я искал. В Linux Ctrl + Z возвращает к приглашению ›^ Z [2] + Stopped lua - person Punkroku; 13.09.2013
comment
Возвращаясь к этому, вы можете помочь мне создать сценарий оболочки, вирус или демона, который будет спамить ctrl + C на SIGINT, предотвращая запуск любых программ в терминале без явного разрешения или отключения этого типа защиты от вирусов. Я не пытаюсь убить текущую программу или прервать ее, но делаю это с другими терминальными программами. - person Punkroku; 10.10.2018
comment
Спасибо за такой ответ. PS Я попытался объяснить идею на tiny.cc/dfvp и github.com/punkroku/dfvp - person Punkroku; 10.10.2018

Вы можете указать конец ввода для стандартного ввода, используя Ctrl-Z или Ctrl-D.

person greatwolf    schedule 12.09.2013
comment
Вы слышали об автокейпе, я хочу использовать его с linux и спамом ctrl C для предотвращения вирусов. Или лучше, если приложение терминала запускается, удерживайте CTRL C или отправляйте паузу в буфер клавиатуры. - person Punkroku; 10.10.2018

CTRL-U удаляет все символы перед позицией курсора, следовательно, всю строку. Так же это работает и в оболочке Linux.

person DjAlan    schedule 18.09.2020