Saturday, December 19, 2009

程式記憶

最近用到的技巧

1)
C字串必須要有結束字元 0x00 結尾, 如此才能正確無誤地把字串列印出來
不過最近用到的技巧, 在於記住字串的長度, 不強制, 不特意地, 用結束字元結尾
比如
想要列印 "abc123" 字串中的 "abc", 除了在 '1' 的位置改變內容為0x00外,
printf("%.*s", 3, "abc123");
也可以印出 "abc"

2) mmap
最近遇到 mmap 的問題, 剛好遇到 tmp 資料夾被寫滿, 導致上一手檔案寫不進去, 然後交給我處理後, 我用 mmap 去讀取資料, 因為檔案存在, 但大小為 zero byte, 所以 mmap 回傳 -1
我的 error handler 只判斷 mmap 回傳 NULL 的時候, 所以沒有抓到這個 error, 最後整個process segmentation falut 結束
最後查了一下 man mmap, 發現 mmap 失敗時會回傳 -1, 我猜一開始應該也有注意過, 但一直沒去理會, 抱著僥倖的心理, 最後自食惡果啦

No comments: