mam dwa połączenia z dwoma różnymi metodami:Jak ustawić wartość errno?
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
A druga metoda:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
Kiedy ustawić
errno
do pewnej wartości, co to robi? tylko sprawdzanie błędów?Jak mogę ustawić
errno
w powyższych metodfunc1
ifunc2
doEEXIST
iENOENT
Thanks
Konwencja "errno" służy do zgłaszania * błędów systemowych *. Czy czujesz, że twoja biblioteka lub twój kod jest częścią systemu? Jeśli nie, użyj innego mechanizmu do zgłaszania błędów. –
Niekoniecznie funkcje narzędziowe, takie jak strtol(), również wydają się zwracać ERANGE, na przykład, tak naprawdę nie jest to _system error_. – proteus
Przykładem miejsca, w którym może być właściwe ustawienie zmiennej errno, byłoby wywołanie funkcji odczytu lub zapisu przekazane funopen(). W tym przypadku twoja implementacja ma się zgadzać z umową wywołania systemowego (read() lub write()), więc warto by było zwrócić -1 w przypadku błędu i ustawić errno z konkretnym błędem. – orpheist