diff --git a/4-ShellP2/questions.md b/4-ShellP2/questions.md new file mode 100644 index 0000000000000000000000000000000000000000..f6832d54524c00024d0dd2fe2079135b65fc964a --- /dev/null +++ b/4-ShellP2/questions.md @@ -0,0 +1,42 @@ +### 1. Can you think of why we use fork/execvp instead of just calling execvp directly? What value do you think the fork provides? + +**Answer:** It makes it easier. + +### 2. What happens if the fork() system call fails? How does your implementation handle this scenario? + +**Answer:** End the child process and print and erro message. + +### 3. How does execvp() find the command to execute? What system environment variable plays a role in this process? + +**Answer:** I don't know. + +### 4. What is the purpose of calling wait() in the parent process after forking? What would happen if we didn’t call it? + +**Answer:** + +### 5. In the referenced demo code we used WEXITSTATUS(). What information does this provide, and why is it important? + +**Answer:** Th exit status of the child processes. It's important to know whether they failed or not and how. + +### 6. Describe how your implementation of build_cmd_buff() handles quoted arguments. Why is this necessary? + +**Answer:** It specifically loops until it finds a quote, then copies what's inbetween the quotes, and then moves on. This is important because otherwwise, you could run into the problem of splitting the cmdline into arguments in a way that wasn't intended. + +### 7. What changes did you make to your parsing logic compared to the previous assignment? Were there any unexpected challenges in refactoring your old code? + +**Answer:** I didn't use strtok becasue it wasn't as necessary. + +### 8. For this question, you need to do some research on Linux signals. You can use this google search to get started. + +#### What is the purpose of signals in a Linux system, and how do they differ from other forms of interprocess communication (IPC)? + +**Answer:** Signals send instructions to processess. Thye are different than other forms of IPC because they are asynchronous. + +### 9. Find and describe three commonly used signals (e.g., SIGKILL, SIGTERM, SIGINT). What are their typical use cases? + +**Answer:** SIGKILL: immediately stops a process, used to forcefully kill a process; SIGTERM: "asks" a process to stop, used to get a program to close properly; SIGINT: interupts a process, used to stop a process running in the terminal + +### 10. What happens when a process receives SIGSTOP? Can it be caught or ignored like SIGINT? Why or why not? + +**Answer:** When a process receives a SIGSTOP, it pauses its execution. It cannot be caught or ignored. +