Linux c 文件操作杂笔
来源:互联网 发布:多态java有什么优点 编辑:程序博客网 时间:2024/06/04 18:05
菜鸟一个刚开始学习linux c语言,把自己学习中每天杂七杂八的小收获记录下来,以后好多熟悉一下!
1、linux设备文件
linux系统基于文件,硬件、软件全部可以用文件表示,你对这个文件操作就相当于操作对应的硬件设备。linux下的/dev目录下就存放了linux的设备文件,按照他们的存取数据的方式,可以分为:字符设备,块设备,伪设备。
字符设备:每次与系统传输一个字符,如键盘设备。当你敲下“linux”是,键盘会把这串分成五个字符传输给系统,先传送“l”,最后传送“x”.
块设备:设备与系统采用块的方式移动数据,如硬盘、内存区域等。块设备通常支持随机存取和寻址,并使用缓存器。当程序向设备发送了读取或者写入数据的请求时,系统会先把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,再把数据传走,而后系统清空缓存。
伪设备:设备节点并不一定要对应物理设备,如null,zero,full,loop,random,urandom。(这个不太懂,百度的)
下面讲一下一些特殊的设备:
/dev/stdin指的就是键盘设备
/dev/stdout指的就是标准输出,可以重定向给它的数据,最终发送到屏幕上
/dev/stderr 指是错误输出,默认也是输出到屏幕上面,但是它的内容不能通过管道传递给grep,管道只能传递标准输出。
/dev/null设备是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。(第一次听说,嘻嘻)
/dev/zero 零字节源,只能读取到无限多的零字节
/dev/random 随机数发生器。完全由用户的输入来产生随机数。
/dev/sda 第1个 SCSI 磁盘(整个磁盘)
2、文件打开open函数的几个参数理解
O_NOCTTY 如果打开的文件指的是终端设备,则不将此设备分配作为此进程的控制终端。(not contral tty)
O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。(true open clean)
O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在
3、终端
串行端口终端(/dev/ttySn)是使用计算机串行端口连接的终端设备,计算机把每个串行端口都看作是一个字符设备
在命令行提示符下键入:echo test > /dev/ttyS0会把单词”test”发送到连接在ttyS0(COM1)端口的设备上。可接串口来实验。
控制终端(/dev/tty):如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连
控制台终端(/dev/ttyn)当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上.
4、getopt函数获取命令行参数
函数声明:int getopt(int argc, char * const argv[], const char *optstring);getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数optstring 则代表欲处理的选项字符串。
5、I/O模型
select实现I/O复用:
I/O处理的五种模型:
1>阻塞I/O模型:若所调用的I/O函数没有完成相关的功能就会是进程挂起,直到相关数据到达才会返回如:终端、网络设备的访问
2>非阻塞模型:当请求的I/O操作不能完成时,则不让进程休眠,而且返回一个错误如:open,read,write等。
3>I/O多路转接模型:如果请求的I/O操作阻塞,且它不是真正阻塞I/O,而且让其中的一个函数等待,在这期间,I/O还能进行其他操作。如:select函数。
4>信号驱动I/O模型:在这种模型下,通过安装一个信号处理程序,系统可以自动捕获特定信号的到来, 从而启动I/O.
5>异步I/O模型:在这种模型下,当一个描述符已准备好,可以启动I/O时,进程会通知内核,由内核进行处理。
- Linux c 文件操作杂笔
- linux c 文件操作
- Linux C 文件操作
- 【LINUX C】文件操作
- Linux C 文件操作
- Linux C 文件操作
- linux C文件操作相关
- Linux c 开发 - 文件操作
- linux c 文件操作相关
- linux-C编程-文件操作
- C Linux 文件操作总结
- linux c 文件操作汇总
- linux c文件操作函数
- linux c文件操作接口
- linux-C编程-文件操作
- [Linux C编程]文件操作
- [Linux C编程]文件操作
- Linux c文件操作总结
- 在hibernate junit测试时出现sf.close的错误的原因
- 嵌入式linux内核的五个子系统
- cocos2d-x 菜鸟学习笔记七(界面控件之scrollView与tableView)
- python2 lambda内赋值打印方法
- SQLServer 2005 jsp 连接 问题
- Linux c 文件操作杂笔
- linux-----------------daemon()函数的使用
- 心愿箱
- Linux设备驱动程序分类转
- routeros双ADSL负载平衡脚本
- 【搞笑趣事】现在强大的小孩子
- Struts2上传与下载(一)- 单文件上传
- Webshims Lib--不错的HTML5类库
- pymongo对mongodb进行批量插入以及批量过大出现的问题