2013-06-04 2 views
1

Я хочу написать программу в C, используя метод fork для вычисления n factorial. эта программа (процесс) создает только одного ребенка. Каждый из процессов (родительский и дочерний) будет вычислять примерно половину полной последовательности. Затем родитель объединяет результаты и печатает конечный результат.Factorial using fork in C

  • У меня есть идея, которая должна разделить число между 1 до п на два интервала [1, п/2], [п/2, п] и назначить задание каждого интервала в процессе но я не очень хорошо знаком с вилкой.

Как передать данные между двумя процессами?

+1

Итак, ваш вопрос в том, что вы хотите, чтобы кто-то объяснил 'fork()'? или ... что именно? – Mike

+0

@Mike Я не кусок кода, который выполняет эту работу. Я вообще-то знаю алгоритм в целом (я поставил идею), но я не знаю, как использовать fork в C и как передать частичный результат от ребенка родительскому. –

+0

http://stackoverflow.com/questions/12430461/how-to-use-fork-in-an-if-statement Помогает ли это? –

ответ

1

Не используйте вилку, а используйте pthreads. Это проще при объединении результатов (вместо того, чтобы иметь дело с IPC, потому что вы раздвоены).

+0

, вот что :( с использованием fork once. –

+0

Это не слишком страшно. Просто используйте трубу для хранения ваших результатов и первый родитель начнет посередине, а родительский старт - в конце (до середины). Затем сохраните свою информацию в трубе и попросите своего родителя прочитать ее и умножьте ее результаты на результат в трубе. заблокируйте файл от родителя в дочернем процессе! – Magn3s1um