Upload files to "OS/C/Week5"
This commit is contained in:
parent
5d67a041f0
commit
6f880a6525
2 changed files with 159 additions and 0 deletions
72
OS/C/Week5/q2.c
Normal file
72
OS/C/Week5/q2.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
// stdlib import
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
// bash utilities import
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void main () {
|
||||
|
||||
// array declaration
|
||||
char *strings[5];
|
||||
char *string_cpy[5];
|
||||
char temp[100];
|
||||
|
||||
// variables reqd
|
||||
int i,j;
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
// input
|
||||
printf("Enter strings to print: \n");
|
||||
for (i = 0; i < 5; i++) {
|
||||
strings[i] = malloc (100 * sizeof(char));
|
||||
string_cpy[i] = malloc (100 * sizeof(char));
|
||||
fgets(strings[i],100,stdin);
|
||||
strcpy(string_cpy[i], strings[i]);
|
||||
}
|
||||
|
||||
// forking
|
||||
pid = fork();
|
||||
|
||||
// child process
|
||||
if (pid == 0) {
|
||||
printf("\n Child Process: \n");
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (j = 0; j < 5 - i - 1; j++) {
|
||||
if (strcmp(strings[j], strings[j + 1]) > 0){
|
||||
strcpy(temp, strings[j]);
|
||||
strcpy(strings[j], strings[j+1]);
|
||||
strcpy(strings[j+1], temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
printf("\n Child: %s \n", strings[i]);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
exit (00);
|
||||
|
||||
// parent process
|
||||
} else if (pid > 0) {
|
||||
wait(&status);
|
||||
printf("\n Parent Process: \n");
|
||||
for (i = 0; i < 5; i++) {
|
||||
printf("\n Parent: %s \n", string_cpy[i]);
|
||||
printf("%d",WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
// exception handling (catchall statement)
|
||||
} else {
|
||||
printf("THE SYSTEM ENCOUNTERED AN ERROR. Please try again later or debug the code. \n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue