Как действительно работает системный вызов fork

Вы забираете /usr/local/lib/libvmtools.so.0 , который предположительно является остатком завершенной сборки в Debian 6 (в котором была libicu44 ). Если вы переименуете это, vmtoolsd должен правильно найти свои библиотеки.

3
09.03.2017, 17:10
1 ответ

Когда вы форк , ядро ​​создает новый процесс, который является копией процесса разветвления, и оба процесса продолжают выполнение после форка (с кодом возврата, показывающим, был ли произошла ошибка, и независимо от того, является ли запущенный код родительским или дочерним). Эта часть «продолжения выполнения» не обязательно происходит сразу: ядро ​​просто добавляет новый процесс в очередь выполнения, и в конечном итоге он будет запланирован и запущен, но не обязательно немедленно.

Это объясняет оба поведения, о которых вы спрашиваете:

  • поскольку новые процессы не обязательно планируются немедленно, родительский процесс может продолжить работу до того, как любой дочерний элемент получит возможность запустить;
  • порядок создания не имеет большого значения (если есть) влияние на очередь выполнения, поэтому нет гарантии, что дочерние процессы будут выполняться в том порядке, в котором они были созданы.
8
27.01.2020, 21:12

Теги

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