У меня длительный процесс, и мне нужно, чтобы он запускал другой процесс (который тоже будет работать в тоже время). Мне нужно только запустить его, а затем полностью забыть об этом.
Мне удалось сделать то, что мне нужно, зачеркнув какой-то код из книги "Программирование рубинов", но я хотел бы найти лучший/правильный способ и понять, что происходит. Вот что я получил изначально:
exec("whatever --take-very-long") if fork.nil?
Process.detach($$)
Итак, так ли это или как мне это сделать?
После проверки ответов ниже я закончил с этим кодом, который, кажется, имеет больше смысла:
(pid = fork) ? Process.detach(pid) : exec("foo")
Буду признателен за то, как работает fork
. [получил это уже]
Правильно ли отсоединение $$
? Я не знаю, почему это работает, и мне очень хотелось бы лучше понять ситуацию.