Существует несколько способов отключения эффекта Ctrl + C :
Так как вы хотите обнаружить, что CTRL + C был нажат, игнорируя сигнал выключен. Вы можете изменить настройки терминала, но вам нужно будет написать пользовательский код обработки ключа. Оболочки не обеспечивают доступ к блокировку сигналов.
Вы можете, однако, вы можете автоматически изолировать подпроцессы от приема сигнала, запустив их в отдельной группе процесса. Интерактивные оболочки запускают фоновые команды в отдельной группе процессов по умолчанию, но не интерактивные оболочки выполняют их в той же группе процессов, и все процессы в группе процесса переднего плана получают сигнал от терминальных событий. Чтобы сообщить оболочку на запускать фоновые задания в отдельной группе процессов, запустить SET -M
. Бег Setsid Ping ...
является еще одним способом форсирования Ping
для запуска в отдельной группе процесса.
set -m
interrupted=
trap 'echo Interrupted, but ping may still be running' INT
set -m
ping … &
while wait; [ $? -ge 128 ]; do echo "Waiting for background jobs"; done
echo ping has finished
Если вы хотите Ctrl + Z , чтобы приостановить фоновую группу процессов, вам нужно будет распространять сигнал от оболочки.
Контролирующие сигналы тонко являются немного растягивающейся для скрипта оболочки, а раковины, отличные от att ksh, как правило, имеют немного багги, когда вы достигаете угловых случаев, поэтому рассмотрите язык, который дает вам больше контроля, такого как Perl, Python или рубиновый
Всем, у кого возникла эта проблема, вот решение:
Я заметил, что изначально после клонирования не было исполняемого файла configure, но после запуска./bootstrap он был создан . Затем я запускаю./configure, make, make install, и тут я заметил, что в папке/usr/local/include
maxminddb _были созданы config.h и maxminddb.h .
Затем я запускаю свой установочный скрипт nginx, и ошибок больше не было.
Мне не хватало версии maxminddb для разработки, поэтому я использовал:
yum install libmaxminddb-devel