strtokeg.c
The left arrow above will return you to
the Home page
The left arrows below will return you to the Previous page
/* strtokeg - skeleton shell using strtok to parse command line usage: strtokeg reads in a line of keyboard input at a time, parsing it into tokens that are separated by white spaces (set by #define SEPARATORS). can use redirected input if the first token is a recognized internal command, then that command is executed. otherwise the tokens are printed on the display. internal commands: clear - clears the screen quit - exits from the program ******************************************************************** version: 1.0 date: December 2003 author: Ian G Graham School of Information Technology Griffith University, Gold Coast ian.graham@griffith.edu.au copyright (c) Ian G Graham, 2003. All rights reserved. This code can be used for teaching purposes, but no warranty, explicit or implicit, is provided. *******************************************************************/ #include <string.h> #include <stdio.h> #include <stdlib.h> #define MAX_BUFFER 1024 // max line buffer #define MAX_ARGS 64 // max # args #define SEPARATORS " \t\n" // token sparators int main (int argc, char ** argv) { char buf[MAX_BUFFER]; // line buffer char * args[MAX_ARGS]; // pointers to arg strings char ** arg; // working pointer thru args char * prompt = "==>" ; // shell prompt /* keep reading input until "quit" command or eof of redirected input */ while (!feof(stdin)) { /* get command line from input */ fputs (prompt, stdout); // write prompt if (fgets (buf, MAX_BUFFER, stdin )) { // read a line /* tokenize the input into args array */ arg = args; *arg++ = strtok(buf,SEPARATORS); // tokenize input while ((*arg++ = strtok(NULL,SEPARATORS))); // last entry will be NULL if (args[0]) { // if there's anything there /* check for internal/external command */ if (!strcmp(args[0],"clear")) { // "clear" command system("clear"); continue; } if (!strcmp(args[0],"quit")) // "quit" command break; // break out of 'while' loop /* else pass command onto OS (or in this instance, print them out) */ arg = args; while (*arg) fprintf(stdout,"%s ",*arg++); fputs ("\n", stdout); } } } return 0; }
For use only by students and instructors using the supplementary material available with the text book: "Operating Systems - Internals and Design Principles", William Stallings, Prentice Hall, 5th Edition, 2004. Not to be printed out or copied by any other persons or used for any other purpose without written permission of the author(s).
©