Question: 1. Write a program using the fork() system call that computes the factorial of a given integer in the child process. The integer whose factorial
1. Write a program using the fork() system call that computes the factorial of a given integer in the child process. The integer whose factorial is to be computed will be provided in the command line. For example, if 5 is provided, the child will compute 5! and output 120. Because the parent and child processes have their own copies of the data it will be necessary for the child to output the factorial. Have the parent invoke the wait () call to wait for the child process to complete before exiting the program. Perform necessary error checking to ensure that a non-negative number is passed on the command line.
2. Modify and run the program shown below in the following way. There is an array of 20 elements defined in the program. The elements of the array are:
[20 18 16 14 12 10 8 6 4 2 -10 -20 -30 -40 15 23 25 75 45 33]. Thread 1 adds the first four elements (i.e., 20, 18, 16, 14), Thread 2 adds the next four elements (i.e., 12, 10, 8, 6), , Thread 5 adds the last four elements (25, 75, 45, 33). Finally, the sum of all the 20 elements is printed by the program.
include
#include
#include
#define NUM_THREADS 3
int counter=1;
void *PrintHello(void *threadid)
{
counter = 2*counter+ (int) threadid;
printf(" Thread Id: %d Counter: %d ", threadid, counter);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for(t=0;t printf("Creating thread %d ", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d ", rc); exit(-1); } } printf(" Counter: %d ", counter); pthread_exit(NULL); }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
