Em qual fluxo é impressa a mensagem "pilha destruída detectada"?
Considere o seguinte programa básico, que apareceu de várias formas em outras questões aqui.
#include <string.h>
int main() {
char message[8];
strcpy(message, "Hello, world!");
}
No meu sistema, se eu colocar isso em um arquivo chamadoClassic.c
, compile-o sem sinalizadores especiais e execute-o, recebo a seguinte saída.
$ gcc -o Classic Class.c
$ ./Classic
*** stack smashing detected ***: ./Classic terminated
Aborted (core dumped)
Normalmente, a saída do programa vai parastderr
oustdout
, então eu esperava que o seguinte não produzisse saída.
./Classic 2> /dev/null > /dev/null
No entanto, a saída é exatamente a mesma, então tenho três perguntas para esse cenário.
Para qual fluxo está sendo impresso aqui?Como eu poderia escrever código que imprime nesse fluxo especial (sem quebrar minha pilha deliberadamente).Como redirecionar a saída desse fluxo?Nota: estou executando em um sistema Linux. Especificamente, o Ubuntu 14.04.