Signal1 hello from child 10320 hello from child 10321

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: use of the fork and execve functions. A shell is an interactive application-level program that runs other programs on behalf of the user. The original shell was the sh program, which was followed by variants such as csh, tcsh, ksh, and bash. A shell performs a sequence of read/evaluate steps, and then terminates. The read step reads a command line from the user. The evaluate step parses the command line and runs programs on behalf of the user. Figure 8.20 shows the main routine of a simple shell. The shell print a command-line prompt, waits for the code/ecf/shellex.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include "csapp.h" #define MAXARGS 128 /* function prototypes */ void eval(char*cmdline); int parseline(const char *cmdline, char **argv); int builtin_command(char **argv); int main() { char cmdline[MAXLINE]; /* command line */ while (1) { /* read */ printf("> "); Fgets(cmdline, MAXLINE, stdin); if (feof(stdin)) exit(0); /* evaluate */ eval(cmdline); } } code/ecf/shellex.c Figure 8.20: The main routine for a simple shell program. user to type a command line on stdin, and then evaluates the command line. 8.5. SIGNALS 419 Figure 8.21 shows the code that evaluates the command line. Its first...
View Full Document

This note was uploaded on 09/02/2010 for the course ELECTRICAL 360 taught by Professor Schultz during the Spring '10 term at BYU.

Ask a homework question - tutors are online