|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 mytomorrow 于 2019-8-7 10:45 编辑 % U8 u! ~5 x# C
& `" Z2 ^. {9 A* ^: _2 ^! q/ N
1 ~/ _5 J# h! D0 K e/ b7 u/ }& r- R6 e
/ _5 T4 o# w( x" g. W2 M 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准。使用库函数编写的函数一般可以应用于不同的平台而不需要做任何修改,具有很好的可移植性。
( p& U; w: {7 ^) h7 Y1 x2 d, W( l) b* K4 l
% V' P' v4 c2 v( \. U9 E 系统调用函数与操作系统直接相关,不同的操作系统所使用的系统调用可能不太一样,因此,如果两个操作系统差异很大,系统调用函数的可移植性就不高。例如windows采用的系统调用的应用程序不能直接在Linux下编译运行。
7 S7 W6 o4 {$ }/ K
# a/ D; _1 @" U6 t. o* A R. D# i# W' ?& R
之所以使用系统调用是因为系统资源的有限性以及内核管理的方便,系统调用将上层内的应用开发与底层的硬件实现分开,上层应用不需要关注底层硬件的具体实现。Linux的系统调用使用软中断实现,使用系统调用后,该程序的状态将从用户态切换到内核态。库函数实现最终也要调用系统调用函数,但它封装了系统调用操作,从而增加了代码的可移植性。- m7 o/ y6 {, v A$ |% \6 ~
: N) F! i% E% V0 H7 G' {& ^
s& C E( _% @% D+ l% g' d% q* c1、open()函数* `; Y8 r2 P/ N* f, \! v
, H% q4 ?% y, X" N3 w
2 \( K$ i0 ^* Q3 P3 W/ j- B% y5 p, Z8 ^! x
8 g3 ^# C- Y; j
# j8 x4 ^! k( c$ V) `
! s ^8 d2 B8 s8 N+ l2 L& E' C, b, p8 i/ T& J% w6 X( a
$ ?! ]3 `7 L* O+ l2 f3 E7 W7 b4 @4 I. x# ?" q2 ~! h7 A
) f: K8 u6 F/ U" j7 j4 g8 Z! K |
|