From 383def344af6f52600ea11b2f66e7d32efc8ca83 Mon Sep 17 00:00:00 2001
From: cxb23 <cxb23@tux1.cci.drexel.edu>
Date: Sat, 22 Feb 2025 00:09:22 -0500
Subject: [PATCH] added questions.md file

---
 4-ShellP2/questions.md | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 4-ShellP2/questions.md

diff --git a/4-ShellP2/questions.md b/4-ShellP2/questions.md
new file mode 100644
index 0000000..f6832d5
--- /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.
+
-- 
GitLab