我只是想知道在Unix系统上用C ++获取函数是否可以返回-1而不是255?
我一直在编写一些OpenCV的东西,并意识到东西并没有按预期工作。我使用的函数意味着返回-1,但一直返回255。所以我只是想知道是否有任何配置我能够做到允许返回码为-1?
这是我在教科书中使用的例子
int main( int argc, char** argv ) {
int i = 0;
cv::namedWindow( "Example3", cv::WINDOW_AUTOSIZE );
cv::VideoCapture cap;
cap.open( std::string(argv[1]) );
cv::Mat frame;
for(;;) {
cap >> frame;
if( frame.empty() ) break; // Ran out of film
cv::imshow( "Example3", frame );
std::cout<<"waitkey:"<<cv::waitKey(33) << std::endl;
}
return -1;
}
可以找到有关waitkey()的信息here
答案 0 :(得分:1)
POSIX says,
状态值可以是
0
,EXIT_SUCCESS
,EXIT_FAILURE
或任何其他值,但只有最低有效8位(即status & 0377
)可从wait()
和waitpid()
获取;完整值应从waitid()
和siginfo_t
传递给SIGCHLD
的信号处理程序。
因此,当使用某些POSIX API来管理其子代时,shell程序将值缩小为8位。
答案 1 :(得分:0)
看来这个问题实际上是OpenCV代码的一个错误。该bug已被解决并推送到OpenCV github
的主分支