linux下c文件描述符问题(:Bad file descriptor)
下面是一个简单的小程序,用creat创建一个文件,获得文件描述符fd,之后write进一些字符,但是用read时,却报错:
read error !
: Bad file descriptor
源代码如下:
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
int fd;
if((fd=creat("file1.c",S_IRWXU))==-1){
perror("creat error !\n");
exit(0);
}else{
//int fd=open("file1.c",O_RDWR);
if(write(fd,"ni hao !",sizeof("ni hao !")-1)==-1){
perror("write error !\n");
exit(0);
}else{
if(write(fd,"jiangdunchuan !",sizeof("jiangdunchuan !"))==-1){
perror("error !\n");
exit(0);
}
printf("successful !\n");
}
char buff[100];
//int fd2=open("file1.c",O_RDWR);
if(read(fd,buff,100)==-1){
perror("read error !\n");
exit(0);
}else{
printf("%s\n",buff);
printf("ok\n");
}
}
return 0;
}
编译通过,运行结果:
read error !
: Bad file descriptor
如果将fd2的注释去掉,read改为(read(fd2,buff,100)==-1)时,运行结果正常!
望各位朋友指教,谢谢!