Qual é o ponto de obstrução?

Eu estive pensando, qual é o ponto de entupimento? Tão perto quanto eu posso dizer, entupir é o mesmo que cerr, mas com buffer, portanto, é mais eficiente. Normalmente stderr é o mesmo que stdout, então entupir é o mesmo que cout. Isso me parece muito manco, então acho que devo estar entendendo errado. Se eu tiver mensagens de log saindo no mesmo local em que as mensagens de erro forem enviadas (talvez algo em / var / log / messages), provavelmente não estou escrevendo muito (portanto, não há muito a perder usando não cerr). Na minha experiência, quero que minhas mensagens de log estejam atualizadas (sem buffer) para poder ajudar a encontrar uma falha (para que não queira usar o tamanco com buffer). Aparentemente, eu sempre deveria estar usando cerr.

Eu gostaria de poder redirecionar o entupimento dentro do meu programa. Seria útil redirecionar cerr para que, quando chamo uma rotina de biblioteca, possa controlar para onde vão e cerr. Alguns compiladores podem suportar isso? Acabei de verificar DJGPP e stdout é definido como o endereço de uma estrutura FILE, por isso é ilegal fazer algo como "stdout = freopen (...)".

É possível redirecionar entupimento, cerr, cout, stdin, stdout e / ou stderr?A única diferença entre entupir e cerr é o buffer?Como devo implementar (ou encontrar) um recurso de registro mais robusto (links, por favor)?

questionAnswers(3)

yourAnswerToTheQuestion