我正在编写软件,需要在main()
的底部对Weka进行系统调用。通话如下:C++中的系统调用问题
printf("Creating neural netowrk...\n");
system("\" java -cp \"FILEPATH\weka.jar\" weka.classifiers.functions.MultilayerPerceptron -t \"ML_data.arff\" -d \"MLPnn.model\" \"");
printf("Neural network created.\n");
但是控制台弹出Creating neural network...
并永远不会前进。
我试过在窗口本身输入命令,它工作正常。我很确定所有的文件路径/引用都是正确的,因为之前我遇到过麻烦,并且给了我错误。现在看来程序卡住了。
应该指出的是,这个系统调用已经工作过,并且保持不变。围绕它的程序发生了巨大的变化,但正如我所说,这实际上是第一套被执行的指令。
有没有一种方法来解决这个问题,或对问题的常见解决方案?我对system
调用的内部机制并没有很好的想法,并且想知道可能的根本原因(内存,硬件等)。
命令行似乎是多余的报价荒谬不堪重负 –
我不。 t像“java”前面的空格,或者整个系统参数字符串是如何被双引号的,但我不确定这会导致问题,没有任何其他症状(如错误返回值) –
你可以在被调用的程序中打印一些东西吗?另外,当测试这样的东西时,在第二个'prin之后执行'fflush(stdout)'可能是一个好主意tf'。 – unxnut