简略的文件读取权限出错,请大神点播

简单的文件读取权限出错,请大神点播
char *str = "we are \n families!!!";
errno=0;
int fd = open("/home/jack/Desktop/abc",0);
printf("fd : %d\n",fd);
printf("errno: %d\n",errno);

errno=0;
int ret = write(fd,str,10);
printf("ret of write : %d\n",ret);
printf("errno: %d\n",errno);

一个简单的c程序,abc存在,且运行程序的用户是abc.c文件的owner,具有对其的读写权限.
输出如下:
fd : 3
errno: 0
ret of write : -1
errno: 9
说明abc被正确打开了,句柄为3,
但是问题是,第二个error的输出是9,也就是 bad file descriptor.
这是为啥呢,句柄是对的呀.不是应该输出 permission denied么?




------解决思路----------------------
无权限是你的程序没有权限访问那个文件(很明显是你用),而是open参数没有声明要,是自己的程序没有要读写权限,所以不能给你返回permission denied,是你错误使用fd,不是没权限。