код ошибки против errno

Я изучаю стандарты C ++ 11. Я хотел понять, если error_code и errno связаны друг с другом? Если да, то как?
Если нет, то в каких условиях следует ожидать установки errno и в каких условиях будет установлен error_code?

Я сделал небольшую тестовую программу, чтобы понять это, но все еще немного запутался. Пожалуйста помоги.

#include <iostream>
#include <system_error>
#include <thread>
#include <cstring>
#include <cerrno>
#include <cstdio>

using namespace std;

int main()
{
try
{
thread().detach();
} catch (const system_error & e) {
cout<<"Error code value - "<<e.code().value()<<" ; Meaning - "<<e.what()<<endl;
cout<<"Error no. - "<<errno<<" ; Meaning - "<<strerror(errno)<<endl;
}
}

Output -
Error code value - 22 ; Meaning - Invalid argument
Error no. - 0 ; Meaning - Success

4

Решение

errno используется теми функциями, которые документируют, что в качестве побочного эффекта от их возникновения ошибки — эти функции являются функциями библиотеки C или ОС, которые никогда не генерируют исключения. system_error используется стандартной библиотекой C ++, когда вы используете библиотечные средства, задокументированные для создания этого исключения. Полностью отдельный. В конечном счете, прочитайте свои документы!

6

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector