linux open read 和write的系统调用出现了点顺序有关问题。
linux open read 和write的系统调用出现了点顺序问题。。。
输出结果是这个istd#include<u
注意原来的应该 按说前面的应该先执行输出 #include<uistd 才对吧 新手,求指导。。。
------解决方案--------------------
#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++;