c++ - std::system似乎没有运行我的命令

标签 c++ gnuplot std

我对C++经验不足,并且正在尝试建立一个程序来创建数据文件,绘制数据文件的gnuplot脚本,然后运行gnuscript。我设置的程序按预期方式创建了数据文件和gnuplot脚本,但是当尝试使用std::system运行脚本时,实际上并没有任何输出:

    std::string sysGnuCommand = "gnuplot output/data/_data.gnu";
    int errorGnuSys = std::system(sysGnuCommand.c_str());
    if (errorGnuSys == -1) std::cout << "[ERROR]: Couldn't execute GnuPlot.\n";

像这样运行程序,将按预期方式创建数据文件和gnuplot脚本,但是gnuscript没有运行,系统功能也不会返回错误。相反,当我运行程序,然后在控制台中手动运行gnuplot output/data/_data.gnu时,我得到了期望的确切输出。为什么std::system命令似乎没有运行?

编辑:如果我将要使用gnuplot搜索的目录更改为错误的目录,则gnuplot会正确返回错误。通过将带有控制台输出的行添加到gnuplot脚本中,我发现在程序中调用std::system时,实际上并未运行_data.gnu。我已检查以确保std::system在预期的目录中正常工作,因此该问题似乎确实存在于某个地方。

编辑2:
int main(){
    FileSystem _fileManager;

    std::string _outDir = "output/data/";

    create_folder_path(_outDir + "/plots");

    _fileManager.set_directory(_outDir);

    std::string currentName;
    currentName = "_data";

    std::string _csvOutput;
    _csvOutput = currentName + ".csv";
    _fileManager.create_file(_csvOutput);

    std::string _gnuScriptOutput;
    _gnuScriptOutput = currentName + ".gnu";
    _fileManager.create_file(_gnuScriptOutput);


    std::string _gnuText = 
        "system \"dir\"\n"
        "set terminal postscript enhanced color eps\n"
        "set cbrange [0:25]\n"
        "set output \"" + _outDir + "plots/" + currentName + ".ps\"\n"
        "plot \"" + _outDir + _csvOutput + "\" using 1:2:3 notitle with image";
    _fileManager.add_line(_gnuScriptOutput, _gnuText);

    for(int x = 1; x <= 5; ++x){
        for(int y = 1; y <= 5; ++y){
            std::vector<double> outputLine;
            outputLine.push_back(x);
            outputLine.push_back(y);
            outputLine.push_back(x*y);
            _fileManager.add_line(_csvOutput, outputLine);
            outputLine.clear();
        }
    }

    std::string sysGnuCommand = "gnuplot " + _outDir + _gnuScriptOutput;
    int errorGnuSys = std::system(sysGnuCommand.c_str());
    if (errorGnuSys != 0) std::cout << "[ERROR]: Couldn't execute GnuPlot.\n";
}

这是我的main函数的代码。 FileSystem只是简化数据处理的一类,并且完全按预期工作-我相信它不是问题的根源。我也不在IDE中工作,所以应该没有任何效果。

最佳答案

信息太少了,我无法指出您的代码出了什么问题。

但是我认为您可以运行system("dir")来检查您的工作目录是否正确。

您知道,如果您在IDE中运行/调试程序,则工作目录可能不符合您的期望。

关于c++ - std::system似乎没有运行我的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61154684/

相关文章:

c++ - 如何从qmake中的包含路径中删除项目的根目录

c++ - 独立于平台的 C++ 并发编程库

c++ - Qt - 如何自动生成变量名?

plot - 赋予 CPU 更多能力在 Octave 中绘图

Bash - 使用临时文件夹中的文件

c++ - 在 C++ 中,如果我有一个 vector 类型的 vector ,如果我在 : vector_variable. push_back() 之后执行此操作会发生什么?

c++ - 我可以将什么用作 RAII+关注点分离的标准 C++ 基类

C++ 重载相等运算符。我应该编写我的函数来接受通过引用或值传递的参数吗?

c++ - C++中的 vector 交集

javascript - Gnuplot:网站上嵌入的交互式 SVG 图形在缩放时显示错误的鼠标坐标