redirecionar saida de erro [RESOLVIDO]

1. redirecionar saida de erro [RESOLVIDO]

Morfeu
orfics

(usa Ubuntu)

Enviado em 06/03/2012 - 15:44h

Olá, estou com o seguinte problema:
Tenho um programa em C e preciso capturar saidas de error, como Segmentation fault, stack overflow, etc. Rodo a seguinte linha de comando:
./prog > sucesso.txt 2> erro.txt

O problema é que os erros, citados acima, aparecem no terminal e nao no arquivo de erro. Gostaria que isso acontecesse mas nao sei como fazer.

Obrigado.


  


2. Re: redirecionar saida de erro [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 06/03/2012 - 15:47h

Tente assim:


./prog | tee sucesso.txt 2> erro.txt


Acho q dá certo.


3. Re: redirecionar saida de erro [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/03/2012 - 15:57h

É só colocar o 2 para saída com erros e 1 (default) para saídas comuns. Nada será exibido na tela, gravará somente nos arquivos texto:



./prog 2> sucesso.txt 1> erro.txt




4. Re: redirecionar saida de erro [RESOLVIDO]

Morfeu
orfics

(usa Ubuntu)

Enviado em 06/03/2012 - 16:10h

Entao pessoal, o comando do Renato suprimiu as saidas de falhas, mas ainda nao escreve no arquivo de erro. A do Alexandre, eu acho q eh a msm coisa q eu fiz. Infelizmente ainda nao funciona. So pra testes:

#include <stdio.h>

int main(void)
{

char str [6];

scanf("%s",str);

printf("\n\nFim do Programa\n\n");


return 0;
}

eh so inserir uma entrada bem grande q da Segmentation fault. Eu queria q essa msg fosse para um arquivo, mas nao consigo.


5. Re: redirecionar saida de erro [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/03/2012 - 16:30h

Tire o "return 0" da última linha, pois isso está dizendo ao programa que independente do que ocorrerá acima a saída será zero e nunca irá gerar um erro.



6. Re: redirecionar saida de erro [RESOLVIDO]

Morfeu
orfics

(usa Ubuntu)

Enviado em 06/03/2012 - 16:35h

alexandregms escreveu:

Tire o "return 0" da última linha, pois isso está dizendo ao programa que independente do que ocorrerá acima a saída será zero e nunca irá gerar um erro.


Eu tentei mas nao funcionou. Independe de ter um return onde ele esta, ja q eu estou forçando Segmentation fault o q devera interromper a execução do programa imediatamente. Nesse caso, nunca chegara a linha do return.


7. Solução

Morfeu
orfics

(usa Ubuntu)

Enviado em 06/03/2012 - 18:17h

Eu chamei o arquivo em um shell script normal. e redireciono a saida apartir dele. Assim:

#!/bin/bash

./prog_em_C

e no terminal:

./arq_sh > sucesso.txt 2> erro.txt

No caso de sucesso, a saida vai pro arquivo sucesso.txt e caso erro, vai pro erro.txt


8. Re: redirecionar saida de erro [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/03/2012 - 18:22h

Exato, em shellscript o resultado deve ser este mesmo.
Agora nunca testei este tipo de saída em um programa em C


9. Dúvida

Bruno
bruno santinato

(usa Fedora)

Enviado em 15/07/2014 - 16:30h

Olá Galera do VOL!

Estou com uma dúvida, estou criando um script para limpeza de arquivos de um filesystem.
E gostaria de gerar um log de erro e um log de sucesso, porém, quando inseri a linha abaixo, os arquivos são criados, porem, nao gera erro no arquivo de erro.

echo -ne "[$HOJE]Remocao realizada com sucesso.\r\n ">>/var/log/log_remocao.log 2>/var/log/log_remocao.err

Exemplo:
executo o script, se ele tiver arquivos para remover, ele remove. Só que se ele não tiver arquivos pra remover, ele executa com sucesso, porem, nao armazena na saida de erro que não houve remoção. Exemplo: queria que ele me informasse na saida de erro, no such file or directory.

Será que eu fui claro na duvida?

Espero uma ajuda

Preciso desse script para amanha hehehe








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts