-
Notifications
You must be signed in to change notification settings - Fork 0
/
report.txt
137 lines (113 loc) · 3.31 KB
/
report.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
=========================================
Problem Statement
=========================================
Design and implement a basic shell interface that supports input/output
redirection, pipes, background processing, and a series of built in
functions as specified below. The shell should be robust (e.g. it
should not crash under any circumstance beyond machine failure). The
required features should adhere to the operational semantics of the bash shell.
=========================================
Steps Taken to Solve Problem
=========================================
- Messed around with the terminal in Mac and Linux, as well as linprog to see
the behavior of the commands.
- Started with the project.
- Added memory management.
- Parsing simple arguments.
- Implemented path resolution.
- Got generic programs to work.
- Worked on limits.
- Implemented io redirection.
- Implemented piping.
==========================================
Assumptions
==========================================
Multiple redirections of the same type will not be used at the same time.
==========================================
System Calls
==========================================
stdio.h - printf, fgets
stdlib.h - malloc, fork, execv, free, getenv, setenv, perror
string.h - strcat, strcpy, strtok, strcmp
sys/types.h - pid_t
sys/stat.h
unistd.h - dup, dup2, close, open, pipe
fcntl.h - close, open
time.h
sys/time.h
sys/wait.h
sys/param.h
semaphore.h
==========================================
Problems
==========================================
- Major issues with execv due to how we handled
the command line arguments.
- A lot of seg faults when implementing memory
management.
- Trouble with parsing the path variable because
strtok function was changing the PATH env variable.
- Limits was confusing to implement.
- Redirection got a bit messy.
- Linprog was really slow.
- Major issues setting up Eclipse environment
on Windows and Mac.
- Pipelining.
===========================================
Known Bugs
===========================================
- Limits doesn't print external commands correctly.
- Piping not functional.
- Multiple redirection doesn't work.
- Parsing a \n when you have it delimming the input results in undefined behavior
===========================================
Division of Labor
===========================================
Zach Diemer
- i/o redirection.
- external commands execution
- Commands.
- background processes
- piping
Taylor Ereio
- parsing
- execution
- commands
- background processes
- exit
Ricardo Noriega
- background processes
- parsing
- external command execution
- README
- Report
===========================================
Slack Days Used
===========================================
1 day from Ricardo Noriega
1 day from Zach Diemer
1 day from Taylor Ereio
===========================================
Log
===========================================
9/29/15
- project completed
- fixed several bugs
- background processes
- fixed io redirection
9/28/15
- fixed various bugs
9/27/15
- execution of external commands
- touched up on mem allocation
- limits
9/26/15
- execute
- echo
- path resolution
9/23/15
- parsing
9/13/15
- started project
- memory management
- environment setup