看板 PangSir 關於我們 聯絡資訊
※ 引述《wrangle1005 (Hogan)》之銘言: : 因為此次作業需要有Error Handler,而在作業要求中,好像又沒有講得很清楚 : 所以在此提出目前有碰到 + 想到的一些可能狀況: : 1. Redirect Operation 後面保證只有一個檔案名稱嗎? : 例如說,後面會不會再有|(param) 或是 |(number) 的case? Redirect Operation (>) 後面只會接檔案名稱 : 2. Advanced Pipe Command 保證是在一行指令的末端嗎? : 例如說,後面會不會再有|(param) 或是 |(number) 的case? |(number) 只會出現在指令的最末端 : 3. 今天下課時有問到output內容是否有上限,當時助教的回答是沒有, : 所以我們會有需要自行維護 pipe_capacity 的問題嗎? : 還是可以提供一個確切的output的大小限制呢? 只有指令本身不會超過 1024 bytes 長度 output 不能保證 : 4. PATH的部份是只關心執行檔的位置? 就跟一般Shell中意義一樣嗎? : 假設在 "PATH=bin:." 下 "./server" : : |-server : |-text_0 : |-bin/ : |-cat : |-text_1 : 那麼當Client輸入"cat text_0"的時候應該成功,而"cat text_1"則會失敗? PATH 部分只會影響執行檔的位置 上述同學的例子 "cat text_0" 會印出 text_0 的內容 "cat text_1"的話 cat 會回傳錯誤訊息 : 5. 不論Client或是Srver端的出現Error,都是一律導向Client印出並結束兩邊的程式嗎? : 還是只忽視該Client的單次操作?亦或是只關閉該Client端? 出現錯誤訊息要顯示在 Client 例如 bin 裡面沒有 grep 的話 (PATH=bin) Client 下 "grep" 指令 Server 應該回傳錯誤訊息給 Client 但不能關閉 Client 端 需繼續接受下一個指令 : 6. 會有不完整或是不合法指令的測資嗎? : 還是我都可以等到執行指令、發生錯誤之後,再來做處理? 可能會有不完整或是不合法指令 你可以事先過濾或餵給 exec 執行出現錯誤會在處理都可以 pipe 中若遇到錯誤指令該行就完全放棄 例如 Client:dsgdsg | grep ds Server:dsgdsg: command not found 因為系統沒有 dsgdsg 指令故會回傳錯誤訊息給 Client 該行後面的 "grep ds" 也會放棄執行 : 7. 會有多個延遲Input同時指到另一個Command的case嗎? : 例如說: : blabla |3 : blabla |2 : blabla |1 : blabla : 又該怎麼處理呢? 有可能 必須三行都處理 例如 % cat text1.txt |3 % cat text2.txt |2 % cat text3.txt |1 % grep 'body' 則在第四行 Server 必須回傳等同以下指令之結果 cat text1.txt | grep 'body' cat text2.txt | grep 'body' cat text3.txt | grep 'body' : 8. 可以使用額外的Shell Command嗎? : 只是用來協助維護Buffer,例如:stdbuf,會只使用fork + exec呼叫. 不可以 exec 只能用來執行指令 (ls, grep, etc.) : 9. server最後的位置是放在./下嗎? : 另外,我如果有其他檔案是fork時候會使用到的,應該不必遵守path的規則吧? : 也就是說,與server處理與實作的相關檔案都應該一定找得到? 其他檔案是fork時候會使用到的?是指 tmpfile 嗎? 請注意 pipe (|) 是不能用 tmpfile 實作的 測試時初始環境只會有指令執行檔跟測試用文字檔 例如 bin/ | ls | grep | cat test.txt : 10. 投影片上面寫到: You cannot use C++ Standard Template Library (STL). : 這句話的意思是指連最基本的string, vector都不能使用嗎? : 在字串處理和輸入輸出的維護上面,如果能夠使用工具會方便很多. 就如字面上所述 所有屬於 C++ STL 的組件都不能使用 : 希望助教能幫忙回答一下~感謝! <(_ _)> TA -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.128