*System Programming (C language) Add to the previous shell the following features: Input file redirection using < Output file redirection, both truncating (>) and appending (>>) #include #include #include #include #include #include #define MAX_INPUT_LENGTH 1024 #define MAX_ARG_LENGTH 128 void execute_command(char *args[]) { pid_t pid = fork(); if (pid == 0) { // Child process if (execvp(args[0], args) == -1) { perror("Shell"); } exit(EXIT_FAILURE); } else if (pid < 0) { // Forking failed perror("Shell"); } else { // Parent process waitpid(pid, NULL, 0); } } int main() { char input[MAX_INPUT_LENGTH]; char *args[MAX_ARG_LENGTH]; char *token; while (1) { printf("MyShell> "); fgets(input, sizeof(input), stdin); // Remove newline character input[strlen(input) - 1] = '\0'; // Tokenize the input token = strtok(input, " "); int i = 0; while (token != NULL) { args[i++] = token; token = strtok(NULL, " "); } args[i] = NULL; // Set the last element to NULL // Handling built-in commands if (args[0] != NULL) { if (strcmp(args[0], "cd") == 0) { if (args[1] != NULL) { if (chdir(args[1]) != 0) { perror("cd"); } } else { fprintf(stderr, "cd: missing argument\n"); } } else if (strcmp(args[0], "exit") == 0) { exit(0); } else { // Execute other commands execute_command(args); } }

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

*System Programming (C language)

Add to the previous shell the following features:

  • Input file redirection using <
  • Output file redirection, both truncating (>) and appending (>>)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define MAX_INPUT_LENGTH 1024
#define MAX_ARG_LENGTH 128

void execute_command(char *args[]) {
pid_t pid = fork();

if (pid == 0) {
// Child process
if (execvp(args[0], args) == -1) {
perror("Shell");
}
exit(EXIT_FAILURE);
} else if (pid < 0) {
// Forking failed
perror("Shell");
} else {
// Parent process
waitpid(pid, NULL, 0);
}
}

int main() {
char input[MAX_INPUT_LENGTH];
char *args[MAX_ARG_LENGTH];
char *token;

while (1) {
printf("MyShell> ");
fgets(input, sizeof(input), stdin);

// Remove newline character
input[strlen(input) - 1] = '\0';

// Tokenize the input
token = strtok(input, " ");
int i = 0;
while (token != NULL) {
args[i++] = token;
token = strtok(NULL, " ");
}
args[i] = NULL; // Set the last element to NULL

// Handling built-in commands
if (args[0] != NULL) {
if (strcmp(args[0], "cd") == 0) {
if (args[1] != NULL) {
if (chdir(args[1]) != 0) {
perror("cd");
}
} else {
fprintf(stderr, "cd: missing argument\n");
}
} else if (strcmp(args[0], "exit") == 0) {
exit(0);
} else {
// Execute other commands
execute_command(args);
}

Expert Solution
steps

Step by step

Solved in 4 steps with 3 images

Blurred answer
Knowledge Booster
Array
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education