鱼C论坛

 找回密码
 立即注册
查看: 3823|回复: 17

[技术交流] Linux系统编程之文件IO 一

[复制链接]
发表于 2014-11-20 16:17:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Crazy迷恋. 于 2014-11-20 23:11 编辑

     前言
     引用小生到一句话,距离上次发帖是啥时候来着?时间真快啊!刚学完linux 系统编程,趁着没有忘记赶紧整理整理,所有我就想写一个linux 系统编程的帖子,分享给大家。这个系列的内容主要还是以整理为主,内容按照我自己学习的顺序开始写,主要参考我们学校的一个老师写的教材,在这里我会比较多到引用他教材中到内容,也会写一些自己到理解,纯当心得笔记之类的,如果有写到不好到地方还请谅解。
     好了废话不多说,既然是linux 系统编程,那么如果需要学习的哥们就必需要有这个系统,现在到虚拟技术做到也成熟,vm ,visual box之类到  装个虚拟机就搞定了。不过这些应该也不需要我多说了。应为能看懂linux 系统编程到人,至少需要熟悉C语言基础。linux/unix基本命令,以及一些基本到操作系统常识。
     环境:
     我到操作系 Kali Linux 1.0.9 64 位
     内核 Linux 3.14-kali1-amd64
     GNOME 3.4.2
     8G 内存
     CPU   i5-2450
     编译器:gcc version 4.7.2 (Debian 4.7.2-5)
     编辑器Vim
  
C语言标准库与系统函数的区别
    大家都清楚,不管是 windows 还是linux /unix 用C语言打印一句话hello world  都是通过printf  当然你也可以用sprintf 只要打到stdout  那么就会显示出来(当然也有缓冲区没刷新到情况)。那么我们讨论区别就要从最初级到hello wordl 讨论起。 其实我们打打hello world 到时候都是打到了 stdout 里去了。stdout stdin stderr,都是一个文件指针,在C标准头文件中已经定义好到。我们可以直接使用。那么问题来了。挖掘。。。。。
    那么这些文件指针又指向了哪里?恩~貌似有点跑题了 这个问题我们接下来讨论
    我们到重点是在研究标准库和系统函数的区别,其实printf 是向下调用的,printf ,putchar fputs 等等。都是会调用到系统函数write。我们都知道我们打印到屏幕上也就是一个硬件上,硬件都是由操作系统来管理到。操作系统通过各种驱动程序来沟通这些硬件,我们要向屏幕打印hello world  那是不是意味着我们要向硬件发信息呢?  对的。wirte 会继续向下调用。因为write 是一个R3 层的 函数(注:Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,从Ring0到Ring3(后面简称R0、R1、R2、R3)。R0层拥有最高的权限,R3层拥有最低的权限。但windonws 和linux/ unix 都只是使用了r0  和r3 两个级别,这类函数是进入不到内核的,通俗到说是3G-4G,(注:以32位操作系统为例子,每个程序都会有1-4G到虚拟内存空间内核会被映射到3-4G这段空间内)。我们要沟通一个硬件就必须进入到内核去,所有write 会进行system call 系统调用是一种软中断,它会从r3 进入到r0 据说都是用汇编写到 对于更底层到东西我就不清楚了。有兴趣到朋友可以一继续向下研究。
     我觉得到这里应该很清晰了C标准库调用->系统库->系统调用进入内核。
     所以 系统函数效率要高。printf 和write 这种类型函数相比
     在这里 盗用老师到一张图:
snapshot1.png

游客,如果您要查看本帖隐藏内容请回复


man write 默认到是 第一章 第一章是系统命令,第二章是系统函数,所有man 2 write  查到到函数才是对到。
这个函数到用法就以后再谈吧。因为这个函数第一个参数是一个 文件描述符,第二第三就不用多说了,文件描述符这个东西还是留给后边再议论。
输入法用到有点蛋疼,各位见谅。






程序地址空间.png

评分

参与人数 2荣誉 +9 鱼币 +7 贡献 +4 收起 理由
破灬王 + 5 + 5 + 3 热爱鱼C^_^
拈花小仙 + 4 + 2 + 1 强烈支持恋恋~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-20 18:41:47 | 显示全部楼层
支持了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 18:54:45 | 显示全部楼层
评分不够用了,恋恋的帖是必须顶的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 19:20:00 | 显示全部楼层
看                                                                                       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-20 19:59:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-20 20:00:04 | 显示全部楼层
拈花小仙 发表于 2014-11-20 18:54
评分不够用了,恋恋的帖是必须顶的~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 20:14:29 | 显示全部楼层
dddddddddddddddddddddddddddddddddddddddddddddddd
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2014-11-20 20:38:53 | 显示全部楼层

唉,每日评分要没上限就好了。恋恋,振兴鱼C还要靠你呢。回来和我们一起哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-24 10:01:36 | 显示全部楼层
振兴鱼C还要靠你呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-24 11:37:37 | 显示全部楼层
真号需要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-24 11:39:55 | 显示全部楼层

楼主你看的是什么教程,能推荐一下么,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-24 12:06:18 | 显示全部楼层
顶一个,为了系统而奋斗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-25 21:32:09 | 显示全部楼层
华彩篇章 发表于 2014-11-24 11:39
楼主你看的是什么教程,能推荐一下么,谢谢了

可以使用传智到视频,但别去培训,因为坑!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-27 15:27:40 | 显示全部楼层
吸取lz经验
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-27 18:03:22 | 显示全部楼层
赞一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-28 10:12:20 | 显示全部楼层
good
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-11 21:56:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 21:44:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 05:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表