Linux C. - C, . C , , , .
-, , C. , , man man-, write, . , , , syscall open. , (0 = stdin, 1 = stdout, 2 = stderr). - , - ( ). , , , .
, ? 32- x86 (, , , ); , 64- x86 (, 32- 32- , . , ). , 32- x86 - int $0x80.
int $0x80 %eax, %ebx, %ecx, %edx, %esi, %edi %ebp, . int $0x80, %eax. , , ; , C , -errno (, -EINVAL). C errno -1 . . syscalls (2) intro (2) .
, write write %eax, ( ) %ebx, ( ) %ecx ( ) %edx. %eax , , ( -1 -4095, ).
, ? /usr/include/linux/unistd.h. /usr/include/asm/unistd.h, , , /usr/include/asm/unistd_32.h, ( write __NR_write is 4). , /usr/include/linux/errno.h ( /usr/include/asm-generic/errno-base.h, - /usr/include/asm-generic/errno.h). , , , , .
, , int $0x80 - . , . , (vDSO; , ) , , , , . , , .
vsyscall, vDSO, . , , , . .