Modify the below program so that the following two conditionsare met:
1. Each child terminates abnormally after attempting to write toa location in the read-only text segment.
2. The parent prints output that is identical (except for thePIDs) to the following:
child 12255 terminated by signal 11: Segmentation fault
child 12254 terminated by signal 11: Segmentation fault
Hint: Read the man page for psignal(3)
___________________________________.
#include
#include
#include
#include
#include
#include
#include
void unix_error(char *msg) /* unix-style error */
{
fprintf(stderr, \"%s: %s\n\", msg, strerror(errno));
exit(0);
}
#define N 2
int main()
{
int status, i;
__pid_t pid;
/* Parent creates N children */
for (i = 0; i < N; i++)
if ((pid = fork()) == 0) /* child */
exit(100+i);
/* Parent reaps N children in no particular order */
while ((pid = waitpid(-1, &status, 0)) > 0) {
if (WIFEXITED(status))
printf(\"child %d terminated normally with exit status=%d\n\",
pid, WEXITSTATUS(status));
else
printf(\"child %d terminated abnormally\n\", pid);
}
/* The normal termination is if there are no more children*/
if (errno != ECHILD)
unix_error(\"waitpid error\");
exit(0);
}