Недавно я использовал утилиту bc, а Ctrl + C не может быть использована для выхода из программы. Сигнал Ctrl + C interrupt возвращается с сообщением use quit to exit. Я могу использовать EOF (Ctrl + D) или quit для выхода.
Я прочитал разницу между ^Z и ^C. Технически ^C должен завершить программу (и большинство программ прервали прием сигнала interrupt). Но bc возвращает сообщение с просьбой использовать quit вместо этого.
Мне было интересно, есть ли в этом конкретное преимущество?
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.
Сценарий или приложение могут улавливать и предотвращать события и, следовательно, внутренне предлагают методы завершения.
Вы можете увидеть простой пример в следующем сценарии оболочки:
# Call trapint function when recive SIGINT
trap trapint SIGINT
# trapint function:
function trapint {
echo "*** SIGINT received ***" # Print a message
exit 0 # Exit gracefully
}
[ ! d3]
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.
Да. Если вы вызываете длинную функцию в bc, вы можете прервать ее с помощью элемента управления + c, и она не выйдет из самого bc, но функция, запущенная внутри bc.
Вот пример того, как я это делаю: [ ! d3]
$ bc twins.b
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
typing 'twins (10)' will print all twin primes less than 10.
twins(10000000)
^C
Runtime error (func=primes, adr=113): interrupted execution
Interruption completed.
print "As you can see, bc is still running\n"
As you can see, bc is still running
5+7
12
Если вы хотите увидеть функцию близнецов, загрузите исходный код bc и посмотрите в каталоге примеров.