我可以在mac上使用C ++获得-1退出代码吗?

时间:2017-01-10 04:21:31

标签: c++ macos unix exitstatus

我只是想知道在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

2 个答案:

答案 0 :(得分:1)

POSIX says

  

状态值可以是0EXIT_SUCCESSEXIT_FAILURE或任何其他值,但只有最低有效8位(即status & 0377)可从wait()waitpid()获取;完整值应从waitid()siginfo_t传递给SIGCHLD的信号处理程序。

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

答案 1 :(得分:0)

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

的主分支