2011-11-08 271 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。