代码如下:
if(fd = open("/home/atticus/apue/apue.h",O_RDONLY) == -1){
printf("open error\n");
}
printf("fd=%d\n",fd);
执行后, fd一直为0, 以为是open函数的问题, 最后发现是if里的判断语句出了问题, ==比=的运算优先级高, 所以open返回一个非负的数, ==先做运算, 所以先与-1比较, 返回值为布尔型的false, 然后=再做赋值运算, 将false赋值给int型的fd, 所以fd的值为0,
修改建议如下:
if((fd = open("/home/atticus/apue/apue.h",O_RDONLY)) == -1){
printf("open error\n");
}
printf("fd=%d\n",fd);