Случай 1:
Код: Выделить всё
▶ lua5.4 -e 'print(pcall(os.execute, "sleep 5"))'
true nil signal 2
Случай 2:
Код: Выделить всё
▶ lua5.4 -e 'print(pcall(io.read))'
false interrupted!
Случай 3:
Код: Выделить всё
lua5.4 -e 'print(pcall(function() for _ in io.lines() do end end))'
lua5.4: (command line):1: interrupted!
stack traceback:
[C]: in function 'pcall'
(command line):1: in main chunk
[C]: in ?
Я в целом понимаю первые два случая, но последний один из них стал для меня некоторой неожиданностью, поэтому мой вопрос: хорошо ли известно описанное выше поведение (и я только что пропустил некоторую документацию)? Кроме того, есть ли что-то еще, на что мне следует обратить внимание при работе с SIGINT?
(Я пробовал версии Lua 5.4 и 5.3, и они обе дают одинаковый результат.)
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-on-linux