2011-11-08 177 views
0

我有一個C++程序,主要用於視頻處理。在該程序中,我啓動了system命令,以獲取將處理後的視頻傳遞給其他二進制文件以對其進行後處理。C++ - 系統命令

我有一個無限循環,我每次都在循環內啓動系統命令。問題是,在某個時候,我收到了system命令的-1返回碼。這可能是什麼原因?

在系統命令裏面,我只是用來自主項目的適當參數調用一個二進制文件。

我想執行的system命令實際上是一個shell文件。 在這個文件中,我從視頻中提取主要特徵,並通過3D聚會庫中的SVM模型傳遞它們以獲得所需的分類。

./LiveGestureKernel ./Video ./SvmVideo 
./mat4libsvm31 -l SvmVideoLabels <SvmVideo> temp_test_file 
./svm-predict temp_test_file svm_model temp_output_file 
cat < temp_output_file 
rm -f temp_* 

在經過一定次數的while循環迭代後,它不會執行腳本文件,我找不出原因。謝謝!

+1

這取決於你的環境,但它可能是你正在執行的程序正在返回-1 –

+0

返回代碼取決於你正在執行什麼。我們需要更多信息。 –

+0

您是否試過在系統庫調用中查找信息? –

回答

3

如果從呼叫system()得到-1,你首先應該考察的errno內容 - 這很可能會告訴你,你的具體問題是什麼。

有一點需要注意的是,system的返回值是一個實現定義的返回值,如果您將它傳遞給非NULL命令,那麼可能-1可能來自您的實際可執行文件。

在這種情況下,最好的辦法是打印出(或以其他方式記錄)在執行失敗時執行的命令(也可能是全部時間),以便在執行時檢查相同參數會發生什麼直接從命令行或shell。