Я пишу рубиновый сценарий начальной загрузки для школьного проекта, и часть этого процесса начальной загрузки должна запустить несколько фоновых процессов (которые записаны и функционируют правильно). То, что я хотел бы сделать, является чем-то вроде:
`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`
Однако это блокируется на первом вызове для выполнения daemon1. Я видел ссылки на a Process.spawn
метод, но это, кажется, 1.9 + функция, и я ограничен Ruby 1.8.
Я также попытался выполнить этих демонов от различных потоков, но я хотел бы, чтобы мой сценарий начальной загрузки смог выйти.
Таким образом, как я могу запустить эти фоновые процессы так, чтобы мой сценарий начальной загрузки не блокировался и мог выйти (но все еще иметь демонов, работающих в фоновом режиме)?
Пока вы работаете в ОС POSIX, вы можете использовать fork
и exec
.
fork
= Создать подпроцесс
exec
= Заменить текущий процесс другим процессом
Затем вам нужно сообщить, что ваш основной процесс не интересуется созданными подпроцессами через Процесс .detach
.
job1 = fork do
exec "/path/to/daemon01"
end
Process.detach(job1)
...