我正在編寫軟件,需要在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