Android培训班(27)

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

初看这段代码时,感觉非常奇怪,没有看到任何打开文件的函数,也没有任何关闭文件的函数,就可以直接操作读取和写入。难道文件是可以自动打开的吗?从linux系统调用API里知道是不可能啊!这时,反复查看输入的命令行,如下:

rgb2565 –rle <xiyang.raw >initlogo.rle

从这个命令行里,看到一些眉目了吧?两个文件为什么要添加像个括号的东西呢?是啊,这两个括号是有特别用途的,对于我刚从WINDOWS转过的程序员来说,是比较奇怪,后来仔细地查看shell调用,详细介绍如下:

标准输入
标准输入是文件描述符0.它是命令的输入,缺省是键盘,也可以是文件或其它的命令输出

标准输出
标准输出是文件描述符1.它是命令的输出,缺省是屏幕,也可以是文件


标准错误
标准错误是文件件描述符2。它是命令错误码率的输出,缺省是屏幕,同样也可以是文件.


重定向操作符 描述
>
将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。


<
从文件而不是从键盘或句柄读入命令输入。


>>
将命令输出添加到文件末尾而不删除文件中已有的信息。

>&
将一个句柄的输出写入到另一个句柄的输入中。

<&
从一个句柄读取输入并将其写入到另一个句柄输出中。

|
从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。

常用文件重定向命令

Shell代码

  1. command >filename       把标准输出重定向到一个新文件中

  2. command >>filename      把标准输出重定向到一个文件中(追加)

  3. command 1>fielname      把标准输出重定向到一个文件中

  4. command >filename 2>&1   把标准输出和标准错误一起重定向到一个文件中

  5. command 2 > filename 把标准错误重定向到一个文件中

  6. command 2 >> filename 把标准输出重定向到一个文件中(追加)

  7. command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)

  8. command < filename >filename2 command命令以filename文件作为标准输入,以filename文件作为标准输出

  9. command < filename command命令以filename文件作为标准输入

  10. command << delimiter 把从标准输入中读入,直至遇到delimiter分界符

  11. command <&m 把把文件描述符m作为标准输入

  12. command >&m 把把标准输出重定向到文件描述符m


从上面详细说明中,就可以知道这个命令行特别地方了。第二个参数<xiyang.raw就是把文件xiyang.raw重定向为标准输入,也就是原始格式的数据作为输入文件打开。

第三个参数>initlogo.rle,就是作为标准输出文件打开了。

通过这段程序,可以了解写程序的人对linux很熟悉,并且利用到了极致,连文件的打开和关闭的事情都省了,极其高效。

你可能感兴趣的:(android,linux,windows)