- Who designed and implemented the original Unix operating system
- Who wrote the first version of the UNIX shell
- Who invented the B programming language (the direct predecessor to the C programming language)
- Who is Ken Thompson
- How does a shell work
- What is a pid and a ppid
- How to manipulate the environment of the current process
- What is the difference between a function and a system call
- How to create processes
- What are the three prototypes of
main - How does the shell use the
PATHto find the programs - How to execute another program with the
execvesystem call - How to suspend the execution of a process until one of its children terminates
- What is
EOF/ “end-of-file”?
access(man 2 access)chdir(man 2 chdir)close(man 2 close)closedir(man 3 closedir)execve(man 2 execve)exit(man 3 exit)_exit(man 2 _exit)fflush(man 3 fflush)fork(man 2 fork)free(man 3 free)getcwd(man 3 getcwd)getline(man 3 getline)getpid(man 2 getpid)isatty(man 3 isatty)kill(man 2 kill)malloc(man 3 malloc)open(man 2 open)opendir(man 3 opendir)perror(man 3 perror)read(man 2 read)readdir(man 3 readdir)signal(man 2 signal)stat(__xstat) (man 2 stat)lstat(__lxstat) (man 2 lstat)fstat(__fxstat) (man 2 fstat)strtok(man 3 strtok)wait(man 2 wait)waitpid(man 2 waitpid)wait3(man 2 wait3)wait4(man 2 wait4)write(man 2 write)
-
Write a beautiful code that passes the Betty checks
-
Write a UNIX command line interpreter.
- Usage:
simple_shell
Your Shell should: - Display a prompt and wait for the user to type a command. A command line always ends with a new line.
- The prompt is displayed again each time a command has been executed.
- The command lines are simple, no semicolons, no pipes, no redirections or any other advanced features.
- The command lines are made only of one word. No arguments will be passed to programs.
- If an executable cannot be found, print an error message and display the prompt again.
- Handle errors.
- You have to handle the “end of file” condition (
Ctrl+D)
You don’t have to: - use the PATH
- implement built-ins
- handle special characters :
",',,`, *, &, # - be able to move the cursor
- handle commands with arguments
execvewill be the core part of your Shell, don’t forget to pass the environ to it…
- Usage:
-
Simple shell 0.1 +
- Handle command lines with arguments
-
Simple shell 0.2 +
- Handle the
PATH forkmust not be called if the command doesn’t exist
- Handle the
-
Simple shell 0.3 +
- Implement the
exitbuilt-in, that exits the shell - Usage:
exit - You don’t have to handle any argument to the built-in
exit
- Implement the
-
Simple shell 0.4 +
- Implement the
envbuilt-in, that prints the current environment
- Implement the