# 簡易 shell demo ## 功能規劃說明 - 在 fork 之前檢查是否檔案存在,不存在則不 fork - 在 parent 不等待 child 的情況時,能夠在 kill child 時處理掉 child 的 defunct process ## Demo ### 前置步驟 1. 編譯(如果執行檔沒有正確執行的話再做即可) g++ -o main main.cpp g++ -o child child.cpp ### wait 版本 demo 步驟 1. 再來直接執行輸出的執行檔就好(main) 2. 執行後會看到 ``` My process id is xxxxx 1092927ms> ``` 3. 輸入 child 會執行 wait 版本的 child process ``` My process id is xxxxx 1092927ms> child child process xxxxx loop for 1 times enter "q" to quit ``` 4. 打開 linux terminal,輸入 ps axe 可以看到正在執行的 child process 5. 在執行檔中輸入 q 後按 enter,或者使用 kill child_process_ID 可以殺掉 child process 6. 在 linux terminal,再次輸入 ps axe 可以看到 child process 不見了,並且繼續執行 parent process(main) ``` 1092927ms> child child process xxxxx loop for 1 times enter "q" to quit 1092927ms> ``` ### no wait 版本 demo 步驟 1. 到執行檔(main),輸入 child & ``` 1092927ms> child & 1092927ms> child process xxxxx loop for 1 times enter "q" to quit ``` 2. 打開 linux terminal,輸入 ps axe 可以看到正在執行的 child process 3. 使用 kill 指令把 child process 殺掉 4. 再次輸入 ps axe,會發現 child process 不見了,也沒有留下 [defunct] process (殭屍程序處理)