目录
read
man 2 read
参数fd
文件描述符。
参数buf
存数据的缓冲区。
参数count
缓冲区大小。
返回值
大于0:读到的字节数。
0:已经读到结尾,读端已经关闭。
-1:判断errno值。
errno值:
EAGAIN or EWOULDBLOCK: 设置了非阻塞方式读,读一个设备文件或者网络文件。 没有数据到达。
EINTR:慢速系统调用被中断。
其他:异常。
write
man 2 write
参数fd
文件描述符。
参数buf
待写出数据的缓冲区。
参数count
数据大小。
返回值
成功:写入的字节数。
失败:-1,设置errno。
测试代码
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
char buf[1024];
int n=0;
int fp1=open(argv[1],O_RDONLY);
if(fp1==-1){
perror("fp1 error");
exit(1);
}
int fp2=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0664);
if(fp2==-1){
perror("fp2 error");
exit(1);
}
while((n=read(fp1,buf,1024))!=0){
if(n<0){
perror("read error");
break;
}
write(fp2,buf,n);
}
close(fp1);
close(fp2);
return 0;
}