从C和x2B打开两个wxt端子+;程序 我有一个C++程序,它包含一个类方法 PLOTE()/使用 GNUPPLAG/: FILE* pipe = popen("/sw/bin/gnuplot -persist","w"); if (pipe != NULL){ gnuPlotCommand = "load " + scriptFileName + "\n"; fprintf(pipe, gnuPlotCommand.c_str()); } else { ... } fclose(pipe);

从C和x2B打开两个wxt端子+;程序 我有一个C++程序,它包含一个类方法 PLOTE()/使用 GNUPPLAG/: FILE* pipe = popen("/sw/bin/gnuplot -persist","w"); if (pipe != NULL){ gnuPlotCommand = "load " + scriptFileName + "\n"; fprintf(pipe, gnuPlotCommand.c_str()); } else { ... } fclose(pipe);,c++,xcode,macos,gnuplot,C++,Xcode,Macos,Gnuplot,脚本文件本身将终端设置为wxt,并加载数据文件。当我第一次运行调用obj1.plot()的程序时,会出现一个带有绘图的窗口。如果我随后运行程序调用obj2.plot()(不关闭第一个窗口),则会出现另一个窗口,但两个窗口都会被“阻止”(我无法旋转绘图,也无法关闭窗口)。如果我成功了呢 obj1.plot(); obj2.plot(); 仅显示一个绘图窗口 当我在单独的Terminal.app中启动相同的gnuplot脚本时,它工作正常(有两个窗口,它们没有被阻止)。如何使用我的程序实现它?我有

脚本文件本身将终端设置为
wxt
,并加载数据文件。当我第一次运行调用
obj1.plot()
的程序时,会出现一个带有绘图的窗口。如果我随后运行程序调用
obj2.plot()
(不关闭第一个窗口),则会出现另一个窗口,但两个窗口都会被“阻止”(我无法旋转绘图,也无法关闭窗口)。如果我成功了呢

obj1.plot();
obj2.plot();
仅显示一个绘图窗口

当我在单独的
Terminal.app
中启动相同的
gnuplot
脚本时,它工作正常(有两个窗口,它们没有被阻止)。如何使用我的程序实现它?我有64位的MacOSX10.8和XCode,以防万一

更新:


我发现删除
fclose(pipe)
obj1.plot()时显示两个窗口;obj2.plot(),但其中一个仍然被“阻止”。

这是gnuplot中的一个限制。它一次只能打开一个交互式绘图(据我所知,
x11
aquaterm
,…)存在相同的行为)。如果您想同时拥有两个交互式绘图,则需要为所需的每个交互式绘图生成一个gnuplot进程(通过
popen
)。

这是gnuplot中的一个限制。它一次只能打开一个交互式绘图(据我所知,
x11
aquaterm
,…)存在相同的行为)。如果您想同时拥有两个交互式绘图,则需要为您想要的每个交互式绘图生成一个gnuplot进程(通过
popen
)。

但我想我还是会这样做的-正如我首先调用的
obj1.plot()obj2.plot()
(在同一个程序中),并且在
plot()
中有
popen
调用?事实上,我试了好几次,有时也能用。我认为问题在于XCode运行并行线程。@Victor--嗯。。。我误解了上面的代码片段。是的,现在我理解得更清楚了,看起来你们使用的是分开的管道。关闭管道可能会导致如上所述的非交互式绘图。我不知道为什么这有时会起作用,而其他人却不起作用……对不起,我的意思是,它有时与
fclose(pipe)
一起起作用。我很确定问题出在并行运行的进程中,但我不知道如何解决它。@Victor——我得到了那个部分。我也很困惑。。。我不认为这与并行运行的进程有任何关系,但我对
wxt
终端的细节不太了解。但我认为我还是这样做了——正如我首先调用的
obj1.plot()obj2.plot()
(在同一个程序中),并且在
plot()
中有
popen
调用?事实上,我试了好几次,有时也能用。我认为问题在于XCode运行并行线程。@Victor--嗯。。。我误解了上面的代码片段。是的,现在我理解得更清楚了,看起来你们使用的是分开的管道。关闭管道可能会导致如上所述的非交互式绘图。我不知道为什么这有时会起作用,而其他人却不起作用……对不起,我的意思是,它有时与
fclose(pipe)
一起起作用。我很确定问题出在并行运行的进程中,但我不知道如何解决它。@Victor——我得到了那个部分。我也很困惑。。。我不认为这与并行运行的进程有任何关系,但我对
wxt
终端的细节不太了解。