设为首页 加入收藏

TOP

Linux系统调用跟我学(四)
2010-12-30 20:26:28 】 浏览:7027
Tags:Linux 系统 调用 跟我学
t,time,time_t *,tloc)展开成一个名为time的函数,原参数time_t就是函数的返回类型,原参数time_t *和tloc分别构成新函数的参数。事实上,程序中用到的time函数的原型就是它。

errno是什么?

为防止和正常的返回值混淆,系统调用并不直接返回错误码,而是将错误码放入一个名为errno的全局变量中。如果一个系统调用失败,你可以读出errno的值来确定问题所在。

errno不同数值所代表的错误消息定义在errno.h中,你也可以通过命令"man 3 errno"来察看它们。

需要注意的是,errno的值只在函数发生错误时设置,如果函数不发生错误,errno的值就无定义,并不会被置为0。另外,在处理errno前最好先把它的值存入另一个变量,因为在错误处理过程中,即使像printf()这样的函数出错时也会改变errno的值。

系统调用兼容性好吗?

很遗憾,答案是--不好。但这决不意味着你的程序会三天两头的导致系统崩溃,因为系统调用是Linux的内核提供的,所以它们工作起来非常稳定,对于此点无需丝毫怀疑,在绝大多数的情况下,系统调用要比你自己编写的代码可靠而高效的多。

但是,在Linux的各版本内核之间,系统调用的兼容性表现得并不像想象那么好,这是由Linux本身的性质决定的。Linux是一群程序设计高手利用业余时间开发出来的,他们中间的大部分人没有把Linux当成一个严肃的商业软件,(现在的情况有些不同了,随着Linux商业公司和以Linux为生的人的增长,不少人的脑筋发生了变化。)结果就是,如果新的方案在效率和兼容性上发生了矛盾,他们往往舍弃兼容性而追求效率,就这样,如果他们认为某个系统调用实现的比较糟糕,他们就会毫不犹豫的作出修改,有些时候甚至连接口也一起改掉了,更可怕的是,很多时候,他们对自己的修改连个招呼也不打,在任何文档里都找不到关于修改的提示。这样,每当新内核推出的时候,很可能都会悄悄的更新一些系统调用,用户编制的应用程序也会跟着出错。

说到这里,你是不是感觉前途一片昏暗呢?呵呵,不用太紧张,如前面所说,随着越来越多的人把Linux当成自己的饭碗,不兼容的情况也越来越罕见。从2.2版本以后的Linux内核已经非常稳定了,不过尽管如此,你还是有必要在每个新内核推出之后,对自己的应用程序进行兼容性测试,以防止意外的发生
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇 Linux系统调用跟我学――进程管理 下一篇GNU make 指南

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目