Code Monkey home page Code Monkey logo

simple_shell's Introduction

Title

Simple Shell Project.

Description

Write a simple UNIX command interpreter.

Objectives

  • Understand the following concepts:
    • 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”?

Output

  • Unless specified otherwise, your program must have the exact same output as sh (/bin/sh) as well as the exact same error output.
  • The only difference is when you print an error, the name of the program must be equivalent to your argv[0] (See below)
  • Example of error with sh:

    $ echo "qwerty" | /bin/sh
    /bin/sh: 1: qwerty: not found
    $ echo "qwerty" | /bin/../bin/sh
    /bin/../bin/sh: 1: qwerty: not found
    $
    

    Same error with your program hsh:

    $ echo "qwerty" | ./hsh
    ./hsh: 1: qwerty: not found
    $ echo "qwerty" | ./././hsh
    ./././hsh: 1: qwerty: not found
    $
    
    

    Allowed functions

    • access (man 2 access)
    • chdir (man 2 chdir)</li>
    • close (man 2 close)
    • closedir (man 3 closedir)
    • execve (man 2 execve)
    • exit (man 3 exit)
    • fork (man 2 fork)
    • free (man 3 free)
    • stat (__xstat) that(man 2 stat)
    • lstat (__lxstat) (man 2 lstat)
    • fstat (__fxstat) (man 2 fstat)
    • getcwd (man 3 getcwd)
    • getline (man 3 getline)
    • 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)
    • strtok (man 3 strtok)
    • wait (man 2 wait)
    • waitpid (man 2 waitpid)
    • wait3 (man 2 wait3)
    • wait4 (man 2 wait4)
    • write (man 2 write)
    • _exit (man 2 _exit)
    • isatty (man 3 isatty)
    • fflush (man 3 fflush)

    Installation

    Clone this repository in your local machine

    https://github.com/Soria-c/simple_shell.git

    Compilation

    User gcc, with the command

    gcc -Wall -Werror -Wextra -pedantic -std=gnu89 *.c -o hsh

    Authors

    Carlos Soria GitHub

    Juan Carlos Garay GitHub

    License

    Simple_shell is open source.

    simple_shell's People

    Contributors

    soria-c avatar unica-fime avatar juan20carlos avatar

    Watchers

     avatar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.