Запустить процесс блокировки сигналов от терминала - PullRequest
0 голосов
/ 04 ноября 2010

Если я запускаю скрипт ruby ​​из терминала и запускаю другой процесс, используя system из него и нажимаю Ctrl + C, тогда INT отправляется другому процессу, как я могу сделать процесс ruby ​​для его обработки, а другой процесс нет вообще его получить?

Пример:

trap('INT'){ puts 'Wait a bit' }
system 'sleep 100'

Если я нажму Ctrl + C, этот скрипт немедленно завершится и ничего не напечатает: INT будет отправлен только в спящий режим, поэтому он выйдет и сценарий будет завершен.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Вы можете поймать INT и выйти, используя trap("INT") { exit }. Как и Грег, не уверен, что это то, что вы хотели, но это может быть чем-то, на что можно обратить внимание.

0 голосов
/ 04 ноября 2010

Возможно, вы говорите о разветвлении, а не об использовании системы.Раздел о Independent Children в Ruby по программированию может помочь.

Или, возможно, вы говорите о запуске дочернего элемента, полностью отсоединенного от родителя, в качестве отдельного приложения, так что если родитель выходитребенок продолжает, как серверы httpd и тому подобное.Я не пробовал, но Daemons звучит так, как будто все будет хорошо.

...