首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux open read 和write的系统调用出现了点顺序有关问题。

2013-11-08 
linux open read 和write的系统调用出现了点顺序问题。。。#includestdlib.h#includeunistd.h#includefc

linux open read 和write的系统调用出现了点顺序问题。。。

#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
int main(){
int in_fd;
int out_fd;
char buffer;
char buff[10];
int tmp;
int i=0;
in_fd=open("write.c",O_RDONLY);
out_fd=open("out",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);
while(read(in_fd,&buffer,1)==1 && i<10){
write(out_fd,&buffer,1);
putchar(buffer);         //这里输出10个字符。。
i++;
}
tmp=read(in_fd,buff,4);
if(tmp==-1)
write(2,"error",tmp);
else 
{
write(1,buff,tmp);  //这里也是输出4个字符
}
exit (0);
}



输出结果是这个istd#include<u     
注意原来的应该 按说前面的应该先执行输出 #include<uistd 才对吧 新手,求指导。。。
open? write read 文件描述符 系统调用
[解决办法]

putchar(buffer);         //这里输出10个字符。。
fflush(stdout); //刷新下缓冲区,阻塞在里面了! 
i++;

热点排行