У меня есть проект на Ubuntu и C ++, и где-то в моем коде есть цикл, который выводит много данных на стандартный вывод (терминал). Среди этих данных есть поле ошибки, которое я хочу видеть в процессе эволюции цикла. Для ясности рассмотрим код ниже:
while (error > epsilon) {
//do stuff
std::cout<<foo1<<std::endl;
std::cout<<foo2<<std::endl;
somehow send error to gnuplot!
//do the rest of the stuff
}
Что я имею в виду, чтобы напечатать ошибка куда-то, например, /dev/null
и попробуй гнуплот это. Однако я не уверен, если это возможно, как это сделать, если это возможно, но, прежде всего, я не уверен, что это правильный способ сделать это.
Как правильно выполнить такую задачу?
Вы могли бы использовать stdout
для сообщений и stderr
для gnuplot, и передайте последний в gnuplot, используя один из советов в Как трубу stderr, а не stdout?. Но это очень нестандартное использование stderr
и поэтому это не рекомендуется, за исключением использования временной отладки. Вы также можете просто написать в файл, а затем построить это позже.
Ты можешь использовать popen
открыть канал в gnuplot и отправить данные. gnuplot-iostream
библиотека поможет здесь (отказ от ответственности: я автор этого).
Других решений пока нет …