《UNIX系统编程》笔记一

本文详细介绍了系统调用的过程,包括从用户态到内核态的转换,glibc的作用,系统调用表的使用,以及如何通过系统调用编号来执行特定的服务例程。此外还简单介绍了C语言头文件的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

上图是系统调用的大致过程,我们先调用一个名为sys_xyz的系统函数,然后glibc(GNU C语言 函数库)外壳函数会发出一个中断指令(int 0x80),进而从用户态切换到内核态,每一个系统调用都对应一个系统调用编号sys_call_table是一个存放了所有调用系统服务例程的列表,它会根据系统调用编号进行索引,查找到对应的系统调用服务例程,这时xyz()函数就被调用了,该函数执行结束后,向system_call返回返回值,然后system_call再将返回值返回给外壳函数,处理器切换至用户态

以上过程只是针对x86-32处理器而言,对于其他型号的处理器可能会有细微差别

在这之前,先说一下C语言建立头文件的方式

其实就是把一段完整的程序拆分成了好几段
这里写图片描述

首先,头文件声明一个自定的函数,然后由一个包含了该自定义头文件的源程序对该函数进行实现,最后在main.c中包含该头文件,并可调用该头文件中的方法,其实上图中这三段程序,就是这一段程序拆开来写的:

#include<stdio.h>

void printHello(void);

int main(void) {
    printHello();
    return 0;
}

void printHello() {
    printf("hello world!\n");
}

输出结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值