Где начинается fork ()?

Обычно папка / var / www / принадлежит root.

Попробуйте это

sudo chmod 0775 /var/www 
sudo chown root.www-data /var/www 
sudo usermod -a -G www-data your-username

logoff, затем войдите в систему, затем попробуйте написать в папку / var / www

4
задан 12 October 2011 в 02:10

3 ответа

Фактическое fork forking происходит внутри примитива fork().

Вы можете просто представить, что внутри кода fork системный вызов фактически дублирует процесс и запускает его выполнение на с той же точкой с небольшой разницей:

функция родительского процесса fork вернет идентификатор процесса дочернего процесса, функция дочернего процесса fork вернет 0.

Таким образом, вы знать, где вы находитесь во время программирования, например

  if (fork())
  {
     printf("Parent speaking\n");
     // parent's tasks
  }
  else
  {
     printf("Child here\n");
     // child's tasks
  }
5
ответ дан 26 May 2018 в 00:13

fork () скопирует процесс, который разветвляется в состоянии, в котором он находится. *

Трудно сказать, в какой строке кода начинается дочерний процесс, вам действительно нужно будет посмотрите на разобранную скомпилированную версию, чтобы понять. Но часто можно предположить, что он начинается после того, как fork был вызван, конечно, в вашем случае.

Он копирует все его переменные, стек, все (на самом деле это пространство в памяти) копируется байт по байт. Единственное, что меняется, это ID процесса **.

Если вы сделаете это:

int i = random_integer();
fork();

Дочерний процесс будет иметь то же значение для i, что и родительский.

*: В дочернем процессе возвращаемое значение fork () будет вместо 0 идентификатором процесса.

**: Кроме того, дочерний процесс не будет иметь родителей Замки и использование ресурсов.

4
ответ дан 26 May 2018 в 00:13

Детский процесс начинает выполнение сразу после вызова fork(). Более конкретно, сразу после fork () возвращает либо идентификатор процессов child, либо 0.

2
ответ дан 26 May 2018 в 00:13

Другие вопросы по тегам:

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