Как создать несколько упорядоченных процессов, используя fork () и execvp () в C? - PullRequest
2 голосов
/ 16 февраля 2011

Я пытаюсь создать несколько процессов, используя вызовы fork () и execvp (), но до сих пор мне не удалось. Вот что я пытаюсь сделать:

Процессы A, B, C должны выполняться одновременно. Когда они закончены, процесс D должен запуститься. Когда это будет сделано, процессы E и F. должны запуститься.

Я могу успешно вызвать execvp (), передав имя программы и ее аргументы, но я не знаю, сколько раз мне следует вызывать fork () и где. Я также знаю, как вызвать wait (), но, опять же, я не уверен, где он должен быть вызван.

Как бы я это сделал?

1 Ответ

0 голосов
/ 16 февраля 2011

Я бы подошел к этому следующим образом:

  1. Основная программа запускается -> fork () Процесс A, ожидание () завершения
  2. Запуск процесса A -> fork () Процесс B, код выполнения, ожидание () завершения процесса B
  3. Процесс B запускается -> fork () Процесс C, код выполнения, ожидание () завершения процесса C
  4. Процесс C запускается -> запускает код, возвращается к процессу B
  5. Процесс B возвращается к процессу A
  6. Процесс A возвращается в основную программу
  7. Основная программа продолжает работать, вызывает подпрограммы процесса D (без разветвления)
  8. Основная программа -> fork () Процесс E, ожидание () завершения
  9. Процесс E запускается -> fork () Процесс F, код выполнения, ожидание () завершения процесса F
  10. Процесс F запускается -> запускает код, возвращается к процессу E
  11. Процесс E возвращается в основную программу
...