Неисправность отслеживания логики программы включает в себя Fork () - PullRequest
0 голосов
/ 23 июня 2019

В основном это вопрос, взятый из экзамена. Они просят нарисовать дерево процессов в отношении вопроса ниже. Я надеюсь, что кто-то хотел бы помочь и объяснить мне, как это отследить

  • а) вывод кода выше -> рисунок, который я привел ниже
  • б) кто первым печатает пойманный сигнал
  • в) кто первым печатает процесс готов
  • d) что произойдет, если мы удалим функцию сигнала в main ()
  • д) что будет, если мы удалим сон (2)

enter image description here

это ответ А, который я тоже не понимаю.

enter image description here

1 Ответ

1 голос
/ 23 июня 2019

Есть 2 вызова форка и никаких условий на них, поэтому мы должны закончить с 4 процессами (это первое, что вы видите на картинке)

Что происходит в деталях:

существует первый корневой процесс.

тогда он разветвляется поэтому у нас есть процесс root (1) и child (2) затем происходит другой вызов fork, и, как это делается как в дочернем, так и в корневом режиме, оба процесса будут разветвляться, таким образом:

root - fork() ----------- fork() -----
          \                  \--- child (3)
           \--child (2)-- fork() ------
                             \---- child (4)

что у тебя на картинке (очевидно, что нельзя предсказать, будет ли 3 порожден до 4, поэтому 4 может быть вторым корневым дочерним элементом, а 3 - дочерним 2)

...