A shell in C using provided files

Job ID: 36635930

Budget: €30 – €250 EUR

I want some to implement features in a shell that I am going to provide in private and the shell should have the same results of some test.
Here are the features:

1. Program invocation in the foreground, syntax: program path parameters ...
Invokes a program as a sub-process of the shell. The shell waits for the program to terminate.

2. Program invocation in the background, syntax: program path parameters ... &
Invokes a program as a sub-process of the shell. The shell does not wait for the program to terminate.
The shell writes the PID and PGID of the new process to the standard error output.

3. Terminating the shell
Syntax: exit [exit value]
If no exit value is specified, the shell should terminate with exit(0).

4. Changing directory
Syntax: cd [directory path]
The shell changes its current directory. If no path is provided, the user's login directory is used. (System call chdir).

5. Input and/or output redirection
• Output redirection, syntax: program invocation > file path
Redirects the program's standard output to the specified file. The file is created if necessary. If it already exists, the old content is deleted.
• Output redirection with append, syntax: program invocation >> file path
If the file already exists, the new content is appended to the old content.
• Input redirection, syntax: program invocation < file path
The file is used as the program's standard input.

6. Sequence, syntax: program invocation ; program invocation ; ... ; program invocation
The programs are executed sequentially in shell sub-processes.

7. Execution on success,
Syntax: program invocation && program invocation && . . . && program invocation
Similar to sequence, but terminates if a program does not terminate with exit(0).

8. Execution on failure,
Syntax: program invocation || program invocation || . . . || program invocation
Similar to sequence, but terminates if a program terminates with exit(0).

9. Pipeline
Syntax: program invocation | program invocation | . . . | program invocation
All programs are executed concurrently in shell sub-processes. The standard output of one pipeline participant becomes the standard input of the next one.