Hacker News new | ask | show | jobs
by aaronmdjones 24 days ago
`errno` is a userland concept; the kernel returns negative error numbers that libc then turns into -1 and sets errno. Thus the correct manpage is errno(3).
2 comments

OpenBSD up to 5.9 had errno(2) symlinked to intro(2), describing error codes:

https://man.freebsd.org/cgi/man.cgi?query=errno&apropos=0&se...

Also, your statements about the kernel and libc are OS specific.

Why does libc do this instead of simply returning that same negative number?
Legacy. It's always been this way and it can't change without breaking everything.
POSIX, basically. It was already a convention by the time linux/glibc implemented it.