Added README file to the project - changed the exec name in Makefile to cshell
This commit is contained in:
parent
1bca3de24d
commit
af33b469e3
2 changed files with 90 additions and 1 deletions
2
Makefile
2
Makefile
|
@ -20,7 +20,7 @@ SOURCES=main.c
|
||||||
OBJECTS=$(SOURCES:.c=.o)
|
OBJECTS=$(SOURCES:.c=.o)
|
||||||
|
|
||||||
# executable name
|
# executable name
|
||||||
EXECUTABLE=myTerminal
|
EXECUTABLE=cshell
|
||||||
|
|
||||||
$(EXECUTABLE): $(OBJECTS)
|
$(EXECUTABLE): $(OBJECTS)
|
||||||
@echo "Building target" $@ "..."
|
@echo "Building target" $@ "..."
|
||||||
|
|
89
README.txt
Normal file
89
README.txt
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
Sagi Dayan 2014
|
||||||
|
|
||||||
|
-----------------------------
|
||||||
|
OS course Ex1 - Home - cshell
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
this project is a basic Terminal emulator written in C for OS course in JCE.
|
||||||
|
|
||||||
|
This Terminal will be able to run almost all programs in the PATH /bin/<bin name>
|
||||||
|
and will create a new process of that <bin name>.
|
||||||
|
|
||||||
|
the Prompt format:
|
||||||
|
<exit code> <userName>@<hostName>$
|
||||||
|
|
||||||
|
the exit code is the Return code from the last child process.
|
||||||
|
if 0 -> child ended successfully.
|
||||||
|
|
||||||
|
for more details see Q&A
|
||||||
|
|
||||||
|
sagi dayan (c) 2014.
|
||||||
|
|
||||||
|
------------
|
||||||
|
Build & Run & Exit
|
||||||
|
------------
|
||||||
|
To build cshell run in terminal: make
|
||||||
|
and run with the command: cshell
|
||||||
|
to quit run from cshell: exit
|
||||||
|
|
||||||
|
to clean the directory run: make clean
|
||||||
|
|
||||||
|
-------------------------
|
||||||
|
Design Decisions & Issues
|
||||||
|
-------------------------
|
||||||
|
the main idea is to be able to run & create processes via commands.
|
||||||
|
you can enter almost any basic command (and some more) that the binarys are in
|
||||||
|
PATH /bin/ .
|
||||||
|
|
||||||
|
Main issues:
|
||||||
|
* you cannot navigate to different directories.
|
||||||
|
* you cannot pipe command and arguments.
|
||||||
|
* every word will be treated as an argumant!
|
||||||
|
therefore you cannot write something like:
|
||||||
|
$ ls -a > "my text.txt"
|
||||||
|
cshell will see the arguments as:
|
||||||
|
# ls
|
||||||
|
# -a
|
||||||
|
# >
|
||||||
|
# "my
|
||||||
|
# text.text"
|
||||||
|
|
||||||
|
and that will throw you an error.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-------
|
||||||
|
Q&A
|
||||||
|
-------
|
||||||
|
Q: can i redirect output to a file?
|
||||||
|
A: yes you can. use the "redirect" char '>' and then the file name.
|
||||||
|
like so:
|
||||||
|
$ man ls > myFile.txt
|
||||||
|
Note: the content of the file Will be deleted, in othe words, it acts
|
||||||
|
exactly like '>' in the UNIX Shell. not '>>'.
|
||||||
|
Note2: the file name must be in one word. as you can see in Issues,
|
||||||
|
cshell dose not support an argument that is seperated with space or tab.
|
||||||
|
|
||||||
|
Q: what is that wired number before the prompt?
|
||||||
|
A: that wierd number is atually the return code of the last process that you ran.
|
||||||
|
the Unix defult return code of a succssesful end of process will be 0. otherwise,
|
||||||
|
in case fo an error or an exception, the code can be any number (code) that the
|
||||||
|
developer of that specific software maked down to exit at.
|
||||||
|
|
||||||
|
Q: why 255?
|
||||||
|
A: as i noticed, the defaul code of "exit(1)" is actually 256, but
|
||||||
|
in the exersize wanted to return 255 in case of an "unknown command" or default
|
||||||
|
exit(1).
|
||||||
|
|
||||||
|
Q: why cant i exit cshell with ctrl-c (^C)?
|
||||||
|
A: because that was also another task in this Ex.
|
||||||
|
only running childes will be killed, while the main process (cshell)
|
||||||
|
will stay running and kicking.
|
||||||
|
|
||||||
|
Q: So how to exit?
|
||||||
|
A: run 'exit'.
|
||||||
|
|
||||||
|
Q: Can i redirect stderr output to file?
|
||||||
|
A: No. the task was to implament only regular output.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue