contributed by < 404allen404
>
實作 q_insert_head
函式時,有遇到幾個問題如下:
new_element->list
旁邊有加小括號時 (1),會誤認為有 Memory leak,但把小括號拿掉後 (2) 就可以成功 commit 了。
strcpy
會有漏洞,所以我改成使用 strncpy
。
strcpy
是直接把字串直接複製到目標地址,但如果要複製的字串的大小大於目標地址能容納的大小,可能會覆蓋到不應該覆蓋的位置,所以 strcpy
這個 function 是有危險性的。但如果使用 strncpy
,我們會知道要傳多大的字串到目標地址,相關來說安全很多。實作 q_remove_head
和 q_remove_tail
函式時,return NULL 的條件忘記加上 head->next == head
。
避免非必要的項目縮排 (即 *
),以清晰、明確,且流暢的漢語書寫。
在 queue.h 這個檔案內,關於 q_ascend
和 q_descend
的註解應該把 Remove 修改為 Delete 較恰當?因為需要在這兩個 function 內執行 free
,但教材有提到 Remove 和 Delete 的定義是不同的。
整合網頁伺服器有以下幾點訣竅:
console.c
中要記得將 use_linenoise
和 web_fd
的 static 關鍵字拿掉,否則無法 extern 。linenoise.c
內的 line_edit
函式,最重要的是要熟悉 select
的用法,如果有開啟網頁伺服器的功能,要記得把 web_fd
和 stdin_fd
都加進 fd_set
裡面,這樣 select
才會一直檢查這兩個檔案描述符有沒有輸入。curl
命令對伺服器發出請求的時候,如果沒有接任何的文字在後面 (如下圖),會跳出 Unknown command '.' 這個回應是正常的嗎?