1

我只是想知道是否有可能在 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() 的信息可以在这里找到

4

2 回答 2

1

POSIX

status 的值可以是0, EXIT_SUCCESS, EXIT_FAILURE, 或任何其他值,尽管只有最低有效 8 位(即status & 0377)可从wait()and获得waitpid();完整的值应waitid()siginfo_t传递给SIGCHLD.

因此,当它使用某些 POSIX API 来管理其子级时,是 shell 程序将值缩小到 8 位。

于 2017-01-10T04:48:37.823 回答
0

看来这个问题实际上是 OpenCV 代码的一个错误。该错误已被解决并推送到OpenCV github的 master 分支

于 2017-01-11T05:07:21.097 回答