Можно использовать экранную команду.
http://www.cyberciti.biz/tips/linux-screen-command-howto.html
Не может быть сделан. От exec(3p)
страница справочника:
Набор сигналов, который будет пойман изображением обработки вызовов, должен быть установлен на действие по умолчанию в новом образе процесса.
Необходимо было бы записать предварительную нагрузку ПОЭТОМУ, которая поднимет трубку обработчики сигналов перед запущенной программой.
У Вас мог только быть он, игнорируют сигналы (SIG_IGN
); Вы не смогли бы дать обработчику сигналов любого от оболочки (trap
) или в рамках программы C (signal(2)
). Когда должностное лицо вызывают, любой обработчик сигналов был бы заменен.
Пример:
:
trap "" 1 2
exec sleep 100000
Затем назовите программу, или в фоновом режиме или нос, и отправьте любому a SIGHUP
или SIGINT
к программе. Это проигнорировано. Помещение кода в прерывании заставляет сигнал быть сброшенным на должностном лице:
:
trap "echo signal caught" 1 2
exec sleep 10000
Это не распечатает "сигнал, пойманный" Вас, отправляют сигналы, но на самом деле завершит программу.
SIG_IGN
не "пойман". "За исключением SIGCHLD, набор сигналов, который будет проигнорирован (SIG_IGN) изображением обработки вызовов, должен быть установлен быть проигнорированным новым образом процесса". – Ignacio Vazquez-Abrams 07.11.2011, 06:07execve
, весь его код и данные освобожден из памяти, таким образом, они не могут больше использоваться для обработчика сигналов. – Gilles 'SO- stop being evil' 08.11.2011, 01:43