2011-10-30 106 views
2

我試圖分析一些代碼(不是我自己寫的),它調用,積極的bufsize,然後測試結果是否爲零。我看不出結果如何爲零,我嘗試過的所有內容都是-1,實際鏈接的大小或軟鏈接的大小。可讀readlink返回0與非零bufsize?

結果可以爲零,如果是的話如何?

回答

1

readlink()的POSIX描述表示:

返回值
成功完成後,的readlink()應返回放置在緩衝器中的字節計數。否則,它應返回值-1,保持緩衝區不變,並設置errno來指示錯誤。

由於空字符串不是有效的文件名,我看不出有什麼辦法,返回值將是零,如果bufsize是大於0

+0

這就是我想了想,謝謝你ü。只是想檢查是否有某些特殊的或實現定義沒有在手冊頁中提到。如果沒有其他人很快就會回答,我會接受答案。 – daniel

2

根據spec

成功完成後,readlink()應返回放置在緩衝區中的字節數。否則,它應返回一個值-1,離開緩衝不變,並設置errno,以指示錯誤

這裏有兩個可能的答案

  1. 它極有可能是你發現的bug在實施(筆者不知道規範的)的發現對實踐碼
  2. 筆者,該平臺不符合規格,返回0,而不是-1,寫了這個不可移植的代碼