Если у вас есть разрыв внутри оператора if, который создает дочерний процесс в цикле for, цикл больше не выполняется?

literki <- strsplit(wektor, "")
x <- lengths(literki)
liczby <- lapply(x, function(x) seq(0, x-1)/(x-1))
pozycje <- data_frame(unlist(literki), unlist(liczby))
1
задан Y. J. 20 January 2019 в 01:33
поделиться

1 ответ

fork(2) «разбивает» процесс, называя его на два независимых процесса, второй потомок первого. В родительском процессе (исходный процесс) он возвращает PID дочернего процесса. В дочернем процессе fork() возвращает 0.

Таким образом, в вашем примере цикл прерывается только в дочернем процессе, а в родительском процессе продолжается порождение остальных философов.

Цикл выполняется N - 1 раз, порождая N - 1 детей-философов. После завершения цикла родительский процесс также вызывает philosopher(i), выполняя N -й и последний философ.

0
ответ дан Linuxios 20 January 2019 в 01:33
поделиться
Другие вопросы по тегам:

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