linux系统调用_Linux应用编程(1)系统调用&库函数 确定真懂?

在文章嵌入式Linux软件开发之《Linux应用编程专题-概述》中对(1)什么是Linux应用编程?(2)为什么要学习Linux应用编程?(3)需要具备哪些条件才能学习?(4)要掌握Linux应用编程哪些内容?这些问题做了详细的解答。从这篇文章开始进正式进入Linux应用编程专题。Linux应用编程涉及到的知识点比较多,也比较广,所以我将详细介绍概念以及代码来演示如何进行Linux应用编程。

说起Linux就必须提Linux操作系统。操作系统中涉及到的内容太多了,但是从Linux应用编程的角度来讲,目前暂时知道操作系统可以管理硬件以及我们编程为实现某种功能所用的函数大多数都是Linux操作系统提供就可以了。有些东西是先会使用它,然后有时间再去搞明白。提到Linux应用编程就必须提“系统调用”“和“库函数”这两个概念。这篇文章将主要说明这结果概念,理解了这些概念后,可以加深对Linux操作系统以及以及应用编程的理解。

ba12f932f051d96b4fb4f9e6c4f7f8c6.png

(1)系统调用

系统调用就是Linux操作系统提供给应用编程者的一个“特殊”入口,也就是经常所用的用户API(Application Programming Interface应用编程接口)应用编程者可以通过这些入口将应用程序的需求传递到操作系统,操作系统调用内部函数来实现相应的功能,并将结果返回给应用程序,比如打开文件,读写文件,删除文件等操作。那么就有一个问题,为什么应用编程者不能直接访问内核提供的服务呢?留作一个思考题

(2)库函数

库函数简单理解就是对系统调用的封装,并不是内核的入口点。比如一个库函数可能调用一个或者多个内核提供的系统调用来实现相应的功能。

(3)应用编程&系统调用&库函数之间关系

从应用编程者的角度来看,系统调用和库函数几乎一样,都是以C函数的形式出现,并且提供应用编程所需要的函数,我们只需要调用对应功能的函数就可以。但是从本质上讲,它们两个是不一样的,一个是在应用层,一个是在操作系统中。

用图展示如下所示:

81fccb9f25884980133de34f589908f7.png

应用编程者在实现应用功能时既可以使用系统调用也可以使用库函数。这函数在后续的讲解中都会提到。另外通过linux中的man命令也可以关于系统调用和库函数的信息。比如man man 可以查看linux 中man手册的用法:

5ffc38bee11ddc49783c37b0d7a7cb2a.png

可以看打开 2 对应的是系统调用接口(由内核所提供的功能)3对应的是库函数(由项目库所提供的功能),以后我们在进行linux应用编程时,就可以linux的发行版系统(ubuntu、fedora、centos等)中用man 2 xxx来查看xxx库函数的详细信息(包括头文件、函数原型、参数说明以及返回值说明等) man 3 xxx来查看库函数xxx的具体用法。不过都是英文吆,所以好学好英语还是有帮助的。

0aca57e00c0d4084d7802e7320182b02.png

后续继续更新...

更多精彩内容可以关注此头条号:嵌入式软硬件开发 喜欢的话大家可以“评论”,“转发”、“点赞”或者“收藏”,感谢大家。相互交流,共同成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值