Я могу получить код выхода -1, используя C ++ на Mac?

Мне просто интересно, возможно ли получить функцию в C ++ в системе Unix, которая будет возвращать -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 () можно найти Вот

1

Решение

POSIX говорит,

Значение статуса может быть 0, EXIT_SUCCESS, EXIT_FAILUREили любое другое значение, хотя только младшие 8 бит (то есть status & 0377) должен быть доступен с wait() а также waitpid(); полная стоимость должна быть доступна от waitid() и в siginfo_t передается обработчику сигнала для SIGCHLD,

Итак, это программа оболочки, которая сужает значение до 8 бит, когда она использует определенные API POSIX для управления своими дочерними элементами.

1

Другие решения

Кажется, что эта проблема на самом деле является ошибкой с кодом OpenCV. Ошибка была устранена и отправлена ​​в главную ветку OpenCV GitHub

0

По вопросам рекламы [email protected]