日期:2014-05-16  浏览次数:20683 次

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++;