В чем суть наличия этой переменной? Насколько я знаю, Linux syscall возвращает в %rax отрицательное значение этой переменной, если ядро обнаружило ошибку во время исполнения вызова. А затем врапер из стандартной библиотеки переносит это значение в потокозависимую переменную errno и возвращает -1.
Почему нельзя возвращать отрицательный номер ошибки, чтобы приложение самостоятельно анализировало возвращаемое значение?
Также, в одной из статей в сети нашел упоминание, что errno - это устаревший метод определения ошибок. У меня пока что опыт в программировании для Linux небольшой, но вроде других методов определения ошибок в C я не встречал, может чего упустил? Существуют ли другие методы, не основанные на этой глобальной переменной errno?