Сообщения об ошибках перенаправления Gnuplot

Я хотел бы перенаправить сообщения об ошибках gnuplot (которые обычно отображаются в терминале gnuplot) в файл для регистрации. Есть какой-либо способ сделать это?

Пример: если я наберу

gnuplot> Hi!

в терминале gnuplot, тогда я получаю

gnuplot> Hi!
         ^
         invalid command
gnuplot> 

Есть ли способ перенаправить "^\ninvalid command" в другой файл, например, err.txt?

Контекст: я использую gnuplot, встроенный в приложение C++ с использованием gnuplot-iostream от Dan Stahlke. Работает отлично! Но я не знаю, как получить сообщения об ошибках из этого канала, так что это был бы хороший обходной путь.

3 ответа

Я не знаю точно, относится ли это к вашему c++ приложение (вероятно, нет), но я думал, что упомянуть в любом случае. Если вы делаете:

[user@server]$ gnuplot 2> err.txt
gnuplot> Hi!
gnuplot> exit
[user@server]$ cat err.txt

G N U P L O T
Version 5.0 patchlevel 1    last modified 2015-06-07 

Copyright (C) 1986-1993, 1998, 2004, 2007-2015
Thomas Williams, Colin Kelley and many others

gnuplot home:     http://www.gnuplot.info
faq, bugs, etc:   type "help FAQ"
immediate help:   type "help"  (plot window: hit 'h')

Terminal type set to 'aqua'
     ^
     invalid command

Может быть, вы могли бы включить что-то вроде этого. Надеюсь, поможет!

Я не думаю, что можно достичь этого внутри Gnuplot, не повредив исходный код.

Сообщение "неверная команда" производится в command.c вызывая функцию int_error (определено в util.c) в пределах которого stderr указано явно...

Кажется, gnuplot по умолчанию перенаправляет как stdout, так и stderr на stderr. Вместо этого вывод файла терминала отправляется на стандартный вывод. Вот пример для проверки. Содержание tmp.gnu.

      print 'some text';
set terminal postscript;
set out
pl sin(x)
      gnuplot tmp.gnu 2>tmp.txt  1>sin.ps

tmp.txtсодержит стандартный вывод и sin.psфайл постскриптума.

Проверьте также этот ответ /questions/23112671/kak-napisat-v-standartnyij-vyivod-s-operatorom-pechati-gnuplot/23112680#23112680 для использования set print "-", set print "/dev/fd/2"или же set print "filename"для перенаправления stdout.

Другие вопросы по тегам