日度归档:2015年7月3日

读和写文件

应用程序通过分别调用read write函数来执行输入和输出。
#include < unistd.h>
ssize_t read(int fd,void *buf ,size_t n);
ssize_t write(int fd,const void *buf,size_t n);


read 函数从描述符为fd的当前文件位置拷贝至多n个字节到存储器位置buf。返回值-1 表示读取错误,而返回值0表示EOF。否则,返回值表示的是实际传送的字节数量。
write 函数从存储器位置buf拷贝至多n个字节到描述符fd的当前文件位置。

#include < stdio.h>
int main(){
char c;
while(read(0,&c,1)!=0)
write(1,&c,1);
return 0;
}

read,write

在某些情况下,read write传送的字节比应用程序要求的要少。这些不足值不一定是错误。因为一些原因,会出现这样的情况:
1 读时遇到EOF。假设我们准备读一个文件,该文件从当前文件位置开始只含有20个字节,该文件从当前文件位置开始只含有20个字节,而我们以50个字节的组块,进行读取。这样一来,下一个read返回值不足为20,此后的read将通过返回0发出EOF信号。
2 从终端读文本行。如果打开文件是与终端相关联(例:键盘 显示器),那么每个read函数将一次传送一个文件行,返回的不足值等于文本行的大小。
3 读和写网络套接字:如果打开的文件对应于网络套接字,那么内部缓冲约束和较长的网络延迟会引起read write 返回不足值。
4 Linux中管道的read write ,也有可能出现不足值。

通常情况下,除了EOF,当你在读磁盘文件时,将不会遇到不足值,而且通常情况下,写磁盘文件时,也不会遇到不足值。然而 当我们需要创建健壮的应用程序时,我们需要返回的调用read write 和检测数据是否传送完毕(加入数据的验证机制)!

相关阅读:
linux c 打开文件的方法

$$ shell变量简介

一 linux shell变量简介
在shell中变量相对于linux系统都为局部变量。
二 linux shell 变量说明
使用举例:
[root@localhost ~]#echo $$ //打印出当前终端对应的进程Id
[root@localhost ~]b=a //定义变量b 并赋值为a
[root@localhost ~]echo $b//打印出name变量
[root@localhost ~]bash //重置终端 生成新的终端id
[root@localhost ~]echo $$
linux shell echo


linux 全局变量,通常指环境变量
相关阅读:
linux c如何操作环境变量
linux 环境变量简介

文件为什么要进行编码

何为文件编码?
编码类型是计算机为了方便文件存储和文件展示,而将文件根据一定的规则生成的一串可供计算机保存的字符。
文件编码在计算机时代得到了大的发展,因为有了计算机编码,才使得计算机可以应用在图像处理 音频处理,信息存储 …领域。


文件编码的作用?
通常我们所听见的文件编码方式为UTF-8 ,UNicode ..等等编码方式。这些编码在系统中所起的作用是:在文件保存时候,根据编码方式将文件转换格式后进行保存,当查看文件时,根据文件编码方式解码文件后再展示出文件。
文件编码我们可以理解为一种协议,一个文字转换协议,根据这个协议,我们所保存和所查看的文件就不会出现乱码。
例一 :
网页为什么要使用编码方式?
1 当我们定义了一个网页的编码方式后,服务器再进行传输网页前,先根据编码方式对文件进行转换后再传输,
当浏览器接收到网页后,再根据编码方式将网页进行编码供用户使用。
例二:
开发程序时,源文件为何建议使用UTF-8的编码方式进行保存呢?
因为如何源代码采用一些特殊的编码方式,
1 当源代码管理器中没有这个文件的编码方式时,文件被其他用户下载后,有可能变成乱码
当其他用户的电脑上没有安装发起者所使用的编码方式时,文件也可能转换为其它异常的现象


在计算机世界里面,所有的文件都有编码方式:
如 视频 图片 都有自己的编码方式
因为这些文件有自己的编码方式,特定的软件根据这种编码方式进行解码文件,就可以得到文件发起者所定义的文件格式

相关阅读:
何为编码类型?