日期:2014-05-16  浏览次数:20630 次

关于返回值的一个小问题
在看APUE时,里面提到的很多系统调用当出错时,返回值都是-1.在作者书中的一些代码中,作者对出错是用<0来判断而并非==-1来判断的。想问一下,对于这类出错来说,返回值怎么判断比较好?

------解决方案--------------------
Linux模式返回-1或者负数是失败的,程序退出一般是非零即失败。一般你调用系统的函数<0就可以了。或者有时候NULL就可以了,自己定义的就要注意了。
------解决方案--------------------
这个应该就是一个移植性问题,像APUE里写的出错返回-1的函数有的实现就可能是返回其他的负数,所以写<0跟好些,而且判断n==-1容易不小心写成n=-1出错,当然你可能保持-1==n的习惯,但是写成<0不是跟舒服些。
另外,函数的返回值也不能一盖而论,还有的是成功返回0,失败返回非0的,在用的时候多加注意就好了
------解决方案--------------------
linux系统里,0一般表示成功返回,<0即出错返回
------解决方案--------------------
一般来说,APUE里面的函数,在MAN 手册中都能查到,手册中会明确的说明该函数的返回值。

大多数情况,返回0为成功,-1为失败。
如果手册中说明返回0成功,返回-1失败。则用<0 作判断跟用 ==-1 作判断效果是一样的,其实你也可以用 !=0 来作判断。效果也是一样。

只是作者可能觉得大多数情况都是-1为失败,有很多不仅仅是-1有些是返回负数为失败,所以他直接用<0 来作判断就可以在很多情况下使用了。

嘻嘻!!!