Skip to content

Commit

Permalink
Step 6: MoreShell
Browse files Browse the repository at this point in the history
  • Loading branch information
cnphil committed Apr 5, 2013
1 parent 0ee7386 commit 4c1ab8c
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
Binary file added MoreShell
Binary file not shown.
41 changes: 41 additions & 0 deletions MoreShell.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include "cse356header.h"
#include "readline.c"
#define MAX_ARGS 50
const char * delim_no_pipe = " \t\n";


void parse_argv(char *buffer, char *argv[])
{
char *cp = buffer;
for(int argc = 0; argc < MAX_ARGS; argc++) {
if((argv[argc] = strtok(cp, delim_no_pipe)) == NULL)
break;
cp = NULL;
}
}


main()
{
while (true) {
int argc;
char *argv[MAX_ARGS];

write(1, "$ ", 2);
char buffer[256];
readline(0, buffer, 255);
buffer[strlen(buffer) - 1] = '\0'; // get rid of cr
parse_argv(buffer, argv);
if(strcmp("exit", argv[0]) == 0) exit(0);
pid_t forkpid;
forkpid = fork();

if(forkpid == 0) { // child process
execvp(argv[0], argv);
exit(0);
}
wait(NULL);

}
exit(0);
}
6 changes: 5 additions & 1 deletion makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
all: MyCopy ForkCopy PipeCopy timer MyShell
all: MyCopy ForkCopy PipeCopy timer MyShell MoreShell
clear:
rm *.o
MyCopy: MyCopy.o
Expand All @@ -21,3 +21,7 @@ MyShell: MyShell.o
g++ MyShell.o -o MyShell
MyShell.o:
g++ -c MyShell.c
MoreShell: MoreShell.o
g++ MoreShell.o -o MoreShell
MoreShell.o:
g++ -c MoreShell.c

0 comments on commit 4c1ab8c

Please sign in to comment.