Android培训班(27)
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
初看这段代码时,感觉非常奇怪,没有看到任何打开文件的函数,也没有任何关闭文件的函数,就可以直接操作读取和写入。难道文件是可以自动打开的吗?从linux系统调用API里知道是不可能啊!这时,反复查看输入的命令行,如下:
rgb2565 –rle <xiyang.raw >initlogo.rle
从这个命令行里,看到一些眉目了吧?两个文件为什么要添加像个括号的东西呢?是啊,这两个括号是有特别用途的,对于我刚从WINDOWS转过的程序员来说,是比较奇怪,后来仔细地查看shell调用,详细介绍如下:
标准输入
标准输入是文件描述符0.它是命令的输入,缺省是键盘,也可以是文件或其它的命令输出标准输出
标准输出是文件描述符1.它是命令的输出,缺省是屏幕,也可以是文件
标准错误
标准错误是文件件描述符2。它是命令错误码率的输出,缺省是屏幕,同样也可以是文件.
重定向操作符描述
> 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。
< 从文件而不是从键盘或句柄读入命令输入。
>> 将命令输出添加到文件末尾而不删除文件中已有的信息。>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
| 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
常用文件重定向命令
Shell代码
command >filename 把标准输出重定向到一个新文件中
command >>filename 把标准输出重定向到一个文件中(追加)
command 1>fielname 把标准输出重定向到一个文件中
command >filename 2>&1 把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把标准错误重定向到一个文件中
command 2 >> filename 把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把把文件描述符m作为标准输入
command >&m 把把标准输出重定向到文件描述符m中
从上面详细说明中,就可以知道这个命令行特别地方了。第二个参数<xiyang.raw就是把文件xiyang.raw重定向为标准输入,也就是原始格式的数据作为输入文件打开。第三个参数>initlogo.rle,就是作为标准输出文件打开了。
通过这段程序,可以了解写程序的人对linux很熟悉,并且利用到了极致,连文件的打开和关闭的事情都省了,极其高效
补充:移动开发 , Android ,