literki <- strsplit(wektor, "")
x <- lengths(literki)
liczby <- lapply(x, function(x) seq(0, x-1)/(x-1))
pozycje <- data_frame(unlist(literki), unlist(liczby))
fork(2)
«разбивает» процесс, называя его на два независимых процесса, второй потомок первого. В родительском процессе (исходный процесс) он возвращает PID дочернего процесса. В дочернем процессе fork()
возвращает 0
.
Таким образом, в вашем примере цикл прерывается только в дочернем процессе, а в родительском процессе продолжается порождение остальных философов.
Цикл выполняется N - 1
раз, порождая N - 1
детей-философов. После завершения цикла родительский процесс также вызывает philosopher(i)
, выполняя N
-й и последний философ.