Я изучаю стандарты 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
errno
используется теми функциями, которые документируют, что в качестве побочного эффекта от их возникновения ошибки — эти функции являются функциями библиотеки C или ОС, которые никогда не генерируют исключения. system_error
используется стандартной библиотекой C ++, когда вы используете библиотечные средства, задокументированные для создания этого исключения. Полностью отдельный. В конечном счете, прочитайте свои документы!
Других решений пока нет …