Ах, да ... опасности "Мы должны сделать больше этого", не объясняя, что каждый из них делает и при каких обстоятельствах вы будете их использовать. Для чего-то вроде delayed_job
вы можете даже использовать fork
, даже не зная, что вы используете fork
. Тем не менее, это действительно не имеет значения. Райан говорил о том, чтобы использовать fork
для предварительной подкачки серверов. delayed_job
будет использовать fork
для превращения процесса в демона. Тот же системный вызов, разные цели. Запуск delayed_job
на переднем плане (без fork
) по сравнению с фоном (с fork
) приведет к незначительной разнице в производительности.
Однако, если вы напишете сервер, который принимает одновременные соединения, теперь совет Райана прав:
fork
: создает копию исходного процесса
execve
: прекращает выполнение текущего файла и начинает выполнение нового файла в том же процессе (очень полезно для задач rake)
pipe
: создает канал (два файловых дескриптора, один для чтения, один для записи)
socketpair
: как труба, но для розеток
select
: давайте подождем, пока один или несколько дескрипторов файлов будут готовы с таймаутом
kill
: используется для отправки сигнала процессу
sigaction
: позволяет изменить то, что происходит, когда процесс получает сигнал