Породите фоновый процесс в Ruby

Я пишу рубиновый сценарий начальной загрузки для школьного проекта, и часть этого процесса начальной загрузки должна запустить несколько фоновых процессов (которые записаны и функционируют правильно). То, что я хотел бы сделать, является чем-то вроде:

`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`

Однако это блокируется на первом вызове для выполнения daemon1. Я видел ссылки на a Process.spawn метод, но это, кажется, 1.9 + функция, и я ограничен Ruby 1.8.

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

Таким образом, как я могу запустить эти фоновые процессы так, чтобы мой сценарий начальной загрузки не блокировался и мог выйти (но все еще иметь демонов, работающих в фоновом режиме)?

40
задан Nakilon 29 March 2015 в 19:03
поделиться

1 ответ

Пока вы работаете в ОС POSIX, вы можете использовать fork и exec .

fork = Создать подпроцесс

exec = Заменить текущий процесс другим процессом

Затем вам нужно сообщить, что ваш основной процесс не интересуется созданными подпроцессами через Процесс .detach .

job1 = fork do
  exec "/path/to/daemon01"
end

Process.detach(job1)

...
67
ответ дан 27 November 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: