This project is for the end of semester project of Holberton School. It's a reproduction of the Shell, the Linux command interpreter but in a simplified version.
- We have a prompt "$ ".
- The program waits for the user's command.
- The command is separated into string arrays with the space as delimiter.
- It searches if the command is a built-in. If yes, it executes it. Else it continues.
- It searches if the input of the user is the absolute path of the command. If yes, it executes. Else, it searches the absolute path and returns it.
- It executes the command. And restart to the step 1.
- 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 PATH to find the programs
- How to execute another program with the execve system 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)
git clone https://github.com/Mxn-ptr/simple_shell.git
gcc -Wall -Werror -Wextra -pedantic -std=gnu98 *.c -o hsh
$ ./hsh
($) /bin/ls
hsh main.c shell.c hello.c
($) ls
hsh main.c shell.c hello.c
($) exit
$
but also in non-interactive mode :
$ echo "/bin/ls" | ./hsh
hsh main.c shell.c hello.c
$ cat hello.c | ./hsh
#include "main.h"
int main()
{
printf("Hello everyone !\n");
return (0);
}
This project was created by Lucas Doual and Maxence Potier.
Lucas Doual :
Maxence Potier :