Как решить проблему синхронизации cout / cerr / perror?
Я разместил это на разных форумах и здесь, я знаю , в чем проблема ( нет необходимости повторять это здесь), но у меня действительно нет решения.
Я использую cout для отслеживания процесса кода, работает нормально.
Я использую perror для идентификации кода erros - там, где это применимо.
Даже когда perror возвращает "недопустимый аргумент", это помогает при отладке.
perror / cerr не следуют потоку кода.
Согласно ответам , которые я получил , и cout, и perror/cerr буферизуются, но фактические выходы perror/cerr на консоль (терминал) никогда не помещаются в одно и то же "место", но в основном в конце выполнения кода.
perror/cerr выводятся красным цветом - это помогает , Но я действительно хотел бы иметь их в правильной кодовой последовательности.
Я не знаю, как буферизировать/ unbuffer perror/ cerr, поэтому он выводит данные в правильной кодовой последовательности.
Я долго откладывал решение, теперь я открыт для предложений, как это исправить,
Прилагаемый код и выходные данные демонстрируют эту проблему.
<pre> if (FileDescriptor_socket) { cout << "Synchronize @line " << __LINE__ << endl; perror("socket allocated SUCCESS"); cerr << "socket allocated SUCCESS" << endl; cout << "Synchronize @line " << __LINE__ << endl; return 0; STOP @line 1437 Synchronize @line 1445 I like to see perror/cerr here Synchronize @line 1448 STOP @line 744 SUCCESS SERVER.AllocateSocket() function Socket_RX_Composite STOP @line 749 TASK @line 753 function Socket_RX_Composite STOP @line 755 Not here socket allocated SUCCESS: Success socket allocated SUCCESS
Что я уже пробовал:
Размещенные на эфферентных форумах, это всего лишь 30 символов заполнения по мере необходимости.
Richard MacCutchan
Когда я запускаю приведенный выше код, я получаю следующий вывод:
Synchronize @line 31 socket allocated SUCCESS: No error socket allocated SUCCESS Synchronize @line 34
Так где же генерируется весь остальной текст?