Porque usar perror?

1. Porque usar perror?

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 29/11/2013 - 19:35h

gente eu estava dando uma lida sobre a função perror, achei algumas explicações mas muito superficial nada que ajudasse de verdade.

no exemplos que eu vi ela funciona mais ou menos como uma função para imprimir algum erro na tela, só que ao invés de usar stdout ela usa stderr, porque usar perror e não um printf, puts, ou outra do tipo para informar um erro?

se possível um pequeno exemplo prático disso(não precisa ser super extenso).


  


2. Re: Porque usar perror?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/12/2013 - 17:57h

Acho que o principal motivo para usar perror() é ter mensagens formatadas de um modo mais ou menos padronizado, sem expor detalhes externos da implementação de como chegar àquele formato de mensagem.

Veja abaixo três formas de obter o mesmo resultado.

/* modo 1: perror() */

#include <stdio.h>
#include <fcntl.h>

int main(void){
int fd=open("arquivo", O_RDONLY, 0444);
if(fd==-1){
perror("Nao foi possivel abrir o arquivo");
return 1;
}
printf("Arquivo aberto com sucesso.\n");
return 0;
}



/* modo 2: strerror() */

#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>

int main(void){
int fd=open("arquivo", O_RDONLY, 0444);
if(fd==-1){
fprintf(stderr, "%s: %s\n", "Nao foi possivel abrir o arquivo", strerror(errno));
return 1;
}
printf("Arquivo aberto com sucesso.\n");
return 0;
}


/* modo 3: variáveis internas (não é definido com clareza em nenhum padrão) */

#include <errno.h>
#include <stdio.h>
#include <fcntl.h>

extern const char * const sys_errlist[];

int main(void){
int fd=open("arquivo", O_RDONLY, 0444);
if(fd==-1){
fprintf(stderr, "%s: %s\n", "Nao foi possivel abrir o arquivo", sys_errlist[errno]);
return 1;
}
printf("Arquivo aberto com sucesso.\n");
return 0;
}


Em tempo: eu raríssimas vezes usei perror. Em geral meus programas emitem mensagens de diagnóstico de um modo mais parecido com o segundo exemplo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts