uc2day02文件描述符

 

富贵不还乡,锦衣夜行!

一。文件I/o:万事万物皆I/O,万事万物皆描述符。
1.打开文件描述符号
#include <fcnl.h>
 int open(pathename,flags)
 int open(pathename,flags,mode_t)
 返回-1表示打开为文件失败。如果>=0:表示打开文件成功,并且返回这个文件所对应的id.
 功能:创建/打开文件
 参数1:文件名+路径
 参数2:创建和打开的方式
 参数3:只对创建有效:权限,打开无效;权限
 
 参数2:2种打开方式:
  1。创建并打开:
   O_CREAT
  2。直接打开
   0
  3.必须参数:
   O_RDONLY O_WRONLY  O_RDWR 3选1,且必须的。
  4。辅助参数
   创建的辅助参数:O_EXCL 文件不存在创建,存在则返回错误-1。目的:防止覆盖文件。
   打开的辅助参数:O_APEND 文件记录指针在末尾
      O_TRUNC 打开文件,并把文件内容清空。//只对打开的文件有意义。
      其他辅助标记:(很少使用)
      O_DIRECT 尽量少用缓存
      O_ASYN用异步方式打开。
      
 总结 文件的打开:
  创建
   O_RDONLY | O_CREAT
   O_RDONLY | O_CREAT | O_EXCL
  打开
   O_RDONLY
   O_RDONLY | O_APPEND
   O_NOATIME打开这个文件,但是不改变文件访问时间。
   
   
   
   
案例1:open.c
 打开文件,读取其中的数据。
案例2:
 创建文件,把键盘输入的数据写入文件
注意:O_TRUNC 只对写或者读写有效。  O_APPEND对读写都有效。
案例3:
 格式数据的保存与读取。即:整数就是整数,字符就是字符:----即二进制的保存与读取:结构体数据保存。
 数据: tom 18 99.99 m
    jack 19 88.88 m
    rose 20 77.77 f 
   
   
结论:
 1。整数保存是作为4个字节保存的。使用cat显示的时候整数就分成4个字符来显示,这4个字符的ASCII 就是我们整数的4个字节,每个字节对应的整数,而且这个整数对应的ASCII码没有对应的字符或者图形,则整数作为4个字符打印就会出现乱马。--------整数作为乱马显示的原因。
 2。什么是2进制文件,什么是文本文件。
  不管什么文件都是使用二进制保存的。
  但文本文件的二进制:把整数转化为文本,在把文本转为2进制。
  和二进制文件的二进制:整数直接整数保存
  比如:88作为文本保存:2个8字符ASCII保存,再把ASCII转为2进制。
   88作为2进制保存:直接把88转为二进制保存
 *文本文件是人为的。同样的数据用文本保存和用二进制保存是不确定的,不能说文本比二进制大,二进制比文本大的说法;
    但是二进制比我们的字符节省空间。 
  乱马出现鸢鹰:
   没有使用保存时对应格式读取,则一般是乱马。
     当我们读取某个格式的文件的数据不对,一般是读取格式和写入的格式不匹配造成。
    二进制文件使用什么格式写,就用什么格式读。(外挂!)
   
  d.字符串在格式数据中,建议不要有多长写多长,而是固定长度写:1。速度快  2。方便读取。
    是:char name[30];r=read(fd,name,sizeof(name)); 
    不是:char name[30];r=read(fd,name,sizeof(strlen(name)));
   
2。打开网卡描述符号
3。关闭文件描述符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值