rendered paste body#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/times.h>#include <time.h> int sum;int factorial (int n){ if (n == 0) return 1; else return (n * factorial (n-1));}int forkloop (int n){ int i; if (n == 0) sum = 0; else if (n == 1) sum = 1; else { pid_t pid; for (i = n; i > 0; i--) { if (fork() == 0) { int rv; rv = factorial(i); exit(rv); } else if (pid < 0) { /* error */ fprintf(stderr, "Fork failed\n"); return 1; } else /* parent process */ { int val; wait(&val); sum = sum + WEXITSTATUS(val); //return 0; } } } return 0;} int main(){ clock_t start, end; double elapsed = 1.0; struct tms tm; int i; int input; printf("Please input an integer value to be factored (keep it small): "); scanf("%d", &input); start = times(&tm); forkloop(input); end = clock(); for(i = 0; i < 2000000; i++) elapsed += (i + elapsed)* (1 - 0.5*elapsed); end = times(&tm); printf("The final factoral sum of: %d is: %d\n", input, sum); printf("Start End are: %ld %ld\n", (long)start, (long)end); elapsed = end - start; printf("Elapsed time is %lf\n", elapsed); printf("TMS time User CPU time is %ld \n", (long) tm.tms_utime); return 0;}