2016-11-15 2 views
1

С Gnuplot можно вывести трубы в другой процесс, например .:Как напрямую вывести вывод Gnuplot в дескриптор файла (например, pipe)?

set output "| cat >&2" 

Эта линия перенаправляет вывод участок в файле дескриптора «2».

Однако в этом случае все выходные данные проходят через cat. Как я могу отправить вывод непосредственно в дескриптор файла по своему выбору?

ответ

2

Вы можете полностью удалить set output из своего скрипта gnuplot. Тогда вывод записывается в stdout, который затем можно перенаправить:

gnuplot -e "set terminal pngcairo; plot sin(x)" >&2 
+0

Это уже близко, но он также записывает все предупреждения и сообщения об ошибках в дескриптор файла. Например, когда 'pngcairo' не находит шрифт, тогда полученное предупреждение также попадет в данные изображения. – ManuelAtWork

+0

Какую оболочку вы используете? В bash '2' есть' stderr', так что это может быть проблемой. Здесь отлично работает: 'gnuplot -e 'устанавливает терминал pngcairo, plot 1"> foobar.png'. Это дает действительное png-изображение, и на консоль записывается предупреждение «Предупреждение: пустая область y [1: 1], настройка на [0.99: 1.01]']. Вы также можете попробовать «gnuplot -e» ... »2>/dev/null 1> & 3', чтобы перенаправить' stdout' в дескриптор файла '3' и удалить' stderr'. – Christoph

+0

Будут ли все терминалы записывать свои сообщения в 'stderr'? (Существует ли стандарт Gnuplot, в котором говорится, что все терминалы должны писать свои сообщения на 'stderr'?) – ManuelAtWork

Смежные вопросы