readlink可以用非零bufsize返回0吗?

时间:2011-10-30 23:46:24

标签: c

我正在尝试分析一些代码(不是我自己编写的),它用readlink调用bufsize,然后测试结果是否为零。我无法看到结果如何为零,我尝试的一切都是-1,真实链接的大小或软链接的大小。

结果可以为零,如果是,如何?

2 个答案:

答案 0 :(得分:2)

根据spec

  

成功完成后,readlink()将返回缓冲区中的字节数。否则,它将返回值-1,保持缓冲区不变,并设置errno以指示错误

这里有两个可能的答案

  1. 您很有可能在实施中发现了错误(作者不知道规范)
  2. 在练习中发现的代码作者,该平台不符合规范并返回0而不是-1并写下这段不可移植的代码

答案 1 :(得分:1)

readlink()的POSIX描述说:

  

返回值
    成功完成后,readlink()将返回缓冲区中的字节数。否则,它将返回值-1,保持缓冲区不变,并设置errno以指示错误。

由于空字符串不是有效的文件名,如果bufsize大于0,我无法看到返回值为零。