Índice
ler
man 2 read
parâmetro fd
descritor de arquivo.
parâmetrobuf
buffer para armazenar dados.
contagem de parâmetros
tamanho do buffer.
valor de retorno
Maior que 0: o número de bytes lidos.
0: O final foi lido e o final da leitura foi fechado .
-1: Determine o valor errno.
valor errado:
EAGAIN ou EWOULDBLOCK : Defina o modo sem bloqueio para ler, ler um arquivo de dispositivo ou arquivo de rede. Nenhum dado chegou.
EINTR : Uma chamada de sistema lenta foi interrompida.
Outros : anormal.
escrever
man 2 write
parâmetro fd
descritor de arquivo.
parâmetrobuf
Buffer para os dados serem gravados.
contagem de parâmetros
tamanho dos dados.
valor de retorno
Sucesso: O número de bytes gravados.
Falha: -1, errno está definido.
código de teste
#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;
}