Напишите программу на Unix C, используя системный вызов fork (), который генерирует факториал и дает последовательность рядов, таких как 1, 2, 6, 24, 120… в дочернем процессе.
Номер последовательности указывается в командной строке.
Примеры:
Input :gfg@ubuntu:~/$ gcc -o fork fork.c gfg@ubuntu:~/$ ./fork 6 Output :1 1 2 1 2 6 1 2 6 24 1 2 6 24 120 1 2 6 24 120 720 After deletion sum 1 3 9 33 153 873 Done Input :gfg@ubuntu:~/$ gcc -o fork fork.c gfg@ubuntu:~/$ ./fork -2 Output :negative number entered -2
Для создания дочернего процесса используется fork (). fork () возвращает:
- <0 не удалось создать дочерний (новый) процесс
- = 0 для дочернего процесса
- > 0 т.е. идентификатор процесса дочернего процесса к родительскому процессу. Когда> 0 родительский процесс будет выполняться.
Внутри дочернего процесса: если input равен 6, первые шесть чисел факториальной последовательности будут даны как выходные данные дочернего процесса. Поскольку родительский и дочерний процессы имеют свои собственные копии данных, дочернему процессу необходимо будет вывести последовательность.
Внутри родительского процесса . Родитель вызывает функцию wait (), чтобы дождаться завершения дочернего процесса перед выходом из программы. Выполните необходимую проверку ошибок, чтобы убедиться, что неотрицательное число не передается в командной строке.
|
Код скомпилированного кода сохранен с именем fork.c
gfg@ubuntu:~/$ gcc -o fork fork.c
Входные данные:
gfg@ubuntu:~/$ ./fork 5
Выход:
1 1 2 1 2 6 1 2 6 24 1 2 6 24 120 After deletion sum 1 3 9 33 153 Done
Во-первых, аргумент командной строки принимается. Затем количество аргументов передается и проверяется, является ли аргумент положительным.
После этого сгенерируйте факториальный ряд.
Связанная статья- C программа для демонстрации fork () и pipe ()
Ссылки:
- http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html
- http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/wait.html
Эта статья предоставлена Kartik Ahuja . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Расчет в родительском и дочернем процессах с использованием fork ()
- Алгоритм расчета таймера динамического тайм-аута
- Первая цифра в факториале числа
- fork () в C
- 8086 программа для поиска факториала числа
- 8085 программа для поиска факториала числа
- поиск в fork ()
- сортировка в fork ()
- Вилка () — Практические вопросы
- C против BASH Вилка бомба
- Разница между fork () и exec ()
- fork () и двоичное дерево
- Создание нескольких процессов с использованием fork ()
- Программа на C для демонстрации fork () и pipe ()
- fork () для выполнения процессов снизу вверх, используя wait ()
0.00 (0%) 0 votes