Linux/Unix系统编程手册二:系统编程概念

系统调用
a.系统调用会将处理器从用户态切换到核心态。以便cpu访问到受保护的内核内存。
b.一般系统调用会有一个c语言外壳函数,便于用户使用。一般linux使用的外壳函数为glibc。外壳函数会帮助用户执行一系列系统调用的步骤,复制参数到指定的寄存器,执行中断机器指令(int 0x80),根据系统调用的返回值设置errno的值
c.在Linux一般惯例中,系统调用调用失败一般返回一个负值,外壳函数将返回值取反,赋值给errno,并返回-1。
d.对errno的解析提供两个函数perror 和 strerror.

#include <stdio.h>
void perror(const char *msg);

#include<string.h>
char *strerror(int errno);

可移植性问题
有些头文件的定义或者源文件的程序段需要某些宏定义来打开,有两种方法来处理此种情况:
a.在程序源码包含任何头文件之前,定义宏,比如
#define _BSD_SOURCE 1
b.还可以使用C编译器的-D选项,
cc -D_BSD_SOURCE prog.c
cc -D_POSIX_C_SOURCE=199506 -D_BSD_SOURCE prog.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值