当前位置: 技术问答>linux和unix
关于系统调用的文件描述符
来源: 互联网 发布时间:2016-09-25
本文导语: #include #include #include int main() { int fd,len; char str[100]; fd=open("hello",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR); if(fd) { len=write(fd,"Hello,I am GUOZIJIAN",...
#include
#include
#include
int main()
{
int fd,len;
char str[100];
fd=open("hello",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
if(fd)
{
len=write(fd,"Hello,I am GUOZIJIAN",strlen("Hello,I am GUOZIJIAN"));
//close(fd);
}
// fd=open("hello",O_RDWR);
len=read(fd,str,100);
str[len]='';
printf("%sn",str);
close(fd);
return 0;
}
为什么把注释的两行去掉后就printf就显示不出内容了
#include
#include
int main()
{
int fd,len;
char str[100];
fd=open("hello",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
if(fd)
{
len=write(fd,"Hello,I am GUOZIJIAN",strlen("Hello,I am GUOZIJIAN"));
//close(fd);
}
// fd=open("hello",O_RDWR);
len=read(fd,str,100);
str[len]='';
printf("%sn",str);
close(fd);
return 0;
}
为什么把注释的两行去掉后就printf就显示不出内容了
|
read之前加一个rewind()下
就可以了。
主要是先write之后,文件指针是指向文件末尾。
要么close(),然后open,可以是文件指针回到文件头部,要么rewind,
就可以了。
主要是先write之后,文件指针是指向文件末尾。
要么close(),然后open,可以是文件指针回到文件头部,要么rewind,
|
我知道是文件指针的问题了,谢谢,可rewind是库函数,我用lseek调整文件读写指针了
file=fdopen(fd,"w+");
// rewind(file);
fseek(file, 0L, SEEK_SET);
下边两行一样的效果
file=fdopen(fd,"w+");
// rewind(file);
fseek(file, 0L, SEEK_SET);
下边两行一样的效果