当前位置: 技术问答>linux和unix
linux下c文件描述符问题(:Bad file descriptor)
来源: 互联网 发布时间:2016-11-03
本文导语: 下面是一个简单的小程序,用creat创建一个文件,获得文件描述符fd,之后write进一些字符,但是用read时,却报错: read error ! : Bad file descriptor 源代码如下: #include #include #include #include int main() { int fd; if((fd=creat...
下面是一个简单的小程序,用creat创建一个文件,获得文件描述符fd,之后write进一些字符,但是用read时,却报错:
read error !
: Bad file descriptor
源代码如下:
#include
#include
#include
#include
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("%sn",buff);
printf("okn");
}
}
return 0;
}
编译通过,运行结果:
read error !
: Bad file descriptor
如果将fd2的注释去掉,read改为(read(fd2,buff,100)==-1)时,运行结果正常!
望各位朋友指教,谢谢!
read error !
: Bad file descriptor
源代码如下:
#include
#include
#include
#include
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("%sn",buff);
printf("okn");
}
}
return 0;
}
编译通过,运行结果:
read error !
: Bad file descriptor
如果将fd2的注释去掉,read改为(read(fd2,buff,100)==-1)时,运行结果正常!
望各位朋友指教,谢谢!
|
晕,没发出去
if((fd=open("jiangdunchuan.c", O_RDWR|O_CREAT|O_TRUNC,0777))==-1)
文件权限的问题。
if((fd=open("jiangdunchuan.c", O_RDWR|O_CREAT|O_TRUNC,0777))==-1)
文件权限的问题。
|
创建文件的权限与打开文件的权限的区别~