Где я могу видеть список функций, которые взаимодействуют с errno?

Проверьте новый Механизм исполнения безопасности (бета вышла 14 ноября):

http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx

http://blogs.msdn.com/cisg/archive/2008/11/13/an-update-on-some-upcoming-free-tools.aspx

Это должно заменить текущую библиотеку Anti-XSS.

Anthony:-) www.codersbarn.com

8
задан Ori Popowski 12 July 2009 в 18:23
поделиться

6 ответов

В стандарте говорится о errno :

Значение errno равно нулю при запуске программы, но никогда не устанавливается в ноль какой-либо библиотекой. функция. Значение errno может быть установлено в ненулевое значение при вызове библиотечной функции независимо от того, есть ли ошибка, при условии, что использование errno не задокументировано в описании функции в этом международном стандарте.

который говорит мне, что любой библиотечная функция может работать с errno любым способом, кроме:

  • она не может установить errno на 0
  • она не может делать то, что она нравится, если в стандарте явно указано иное

Обратите внимание, что стандарт предлагает следующее в сноске:

Таким образом, программа, которая использует errno для проверки ошибок, должна установить его в ноль перед вызовом библиотечной функции , затем проверьте его перед последующим вызовом библиотечной функции. Конечно, библиотечная функция может сохранять значение errno при входе, а затем устанавливать его на ноль,

6
ответ дан 5 December 2019 в 14:05
поделиться

Почти все библиотечные функции posix могут устанавливать значение errno в случае возникновения ошибки, то есть когда функция возвращает -1. Исключением являются функции потоковой передачи, поскольку установка одной глобальной переменной ошибки из нескольких потоков была бы очень опасной. В случае успеха они возвращают 0, в противном случае - код ошибки (этот код совместим с errno, поэтому вы можете использовать для него функции strerror и perror).

1
ответ дан 5 December 2019 в 14:05
поделиться

@Adam, as Neil said, any function can be compiled against errno.h and set errno. It is by definition, impossible to list all utilities that have been compiled in this way to use the core errno functionality.

That said, there are several ways that errors may be reported back to a user. Using errno is just one.

1
ответ дан 5 December 2019 в 14:05
поделиться

Вы можете использовать свой любимый редактор и функцию «Найти в файлах ...» для поиска файлов, содержащих ключевое слово errno .

-1
ответ дан 5 December 2019 в 14:05
поделиться

Уместным вопросом может быть каковы значения errno может получить и что каждое из них означает. Вы можете увидеть их в intro (2) .

0
ответ дан 5 December 2019 в 14:05
поделиться

Вы должны предположить, что любая функция может устанавливать errno, а не только те, которые находятся в стандартной библиотеке. Поэтому список был бы немного бессмысленным.

5
ответ дан 5 December 2019 в 14:05
поделиться