У меня есть программа на С++ 11, которая использует std::fprintf
для записи в stderr
в качестве информации журнала и отладки. Я знаю, что fprintf
может терпеть неудачу и возвращать отрицательное значение, но я не могу определить, является ли операция атомарной (если она не работает, не имеет никакого эффекта) или может написать некоторую часть текста, а затем сбой (или любой другой побочный эффект).
Функция, использующая fprintf
, выглядит следующим образом:
void writeToConsole (std::string const &message)
{
std::fprintf(stderr, "%s\n", message.c_str());
}
Я разрабатываю, используя Clang и GCC в Linux (пока), но мой вопрос больше о стандарте, поэтому...
Вопрос:
Если std::fprintf
не удается, все еще возможно, что некоторые символы были записаны в stderr
? Является ли это поведение стандартом C/С++ или определяется реализацией?
Более того, если std::fprintf
не удается, я должен прервать выполнение программы или продолжить выполнение без каких-либо побочных эффектов (кроме невозможности записи в stderr
)?