C ++ - 系统命令

时间:2011-11-08 05:00:10

标签: c++

我有一个C ++程序,主要用于视频处理。在程序内部,我正在启动system命令,以便将已处理的视频传递给其他二进制文件以对其进行后处理。

我有一个无限循环,我每次都在循环内启动系统命令。问题是,在某一点上,我从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 个答案:

答案 0 :(得分:3)

如果您从-1的电话中获得system(),则应首先检查errno的内容 - 这很可能会告诉您具体问题是什么。

需要注意的一件事是system的返回值是一个实现定义的返回值,在这种情况下你传递一个非NULL命令,所以-1的返回值可能{{1}} 1}}可能来自您的实际可执行文件。

在这种情况下,最好的办法是打印(或以其他方式记录)失败时执行的命令(可能所有时间),以便您可以检查相同参数会发生什么当你直接从命令行或shell执行它时。