xcode — Открытие двух терминалов wxt из программы C ++

У меня есть программа C ++, которая содержит метод класса plot() работать с gnuplot:

FILE* pipe = popen("/sw/bin/gnuplot -persist","w");
if (pipe != NULL){
gnuPlotCommand = "load " + scriptFileName + "\n";
fprintf(pipe, gnuPlotCommand.c_str());
}
else { ... }
fclose(pipe);

Сам скрипт-файл устанавливает терминал в wxt и загружает файл данных. Когда я впервые запускаю вызов программы obj1.plot()появится окно с сюжетом. Если я тогда запускаю вызов программы obj2.plot() вместо этого (без закрытия первого окна) появляется другое окно, но оба окна становятся «заблокированными» (я не могу вращать графики и не могу закрыть окна). И если я сделаю это

obj1.plot();
obj2.plot();

появляется только одно окно сюжета.

Когда я запускаю то же самое gnuplot скрипты в отдельном Terminal.appЭто работает правильно (есть два окна, и они не заблокированы). Как я могу добиться этого с помощью моей программы? У меня есть 64-битная Mac OS X 10.8 и XCode, если это имеет значение.

Обновить:

Я обнаружил, что удаление fclose(pipe); заставляет два окна появляться, когда obj1.plot(); obj2.plot(); называется, но один из них все еще «заблокирован».

1

Решение

Это ограничение в gnuplot. Одновременно может быть открыт только 1 интерактивный сюжет (насколько я знаю, такое же поведение существует с x11, aquaterm…) Если вы хотите иметь 2 интерактивных графика одновременно, вам нужно запустить процесс gnuplot (через popen) для каждого интерактивного сюжета, который вы хотите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]