Сообщения об ошибках перенаправления 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.