系统级I/O

       进程通过open函数打开一个已存在的文件或者创建一个新的文件。应用程序可以用过read和write函数来执行输入和输出。在某些情况下,read和write函数传送的字节比应用程序要求的要少,这些不足值不代表有错误,如果想创建健壮的网络应用,就必须通过反复调用write和read函数处理不足值,使用RIO包可以自动处理不足值。

        RIO提供了两种不同类型的函数:无缓冲的输入输出函数,这些函数直接在存储器和文件之间传送数据,没有应用缓冲。它,恶魔对将二进制数据写到网络和从网络写到二进制数据尤其有用。带缓冲的输入函数,这些函数允许你高效地从文件中读取文本行和二进制数据,这些文件的内容缓存在应用级缓存区内。

        应用程序能够通过调用stat和fstat函数,检索文件的信息,其中stat数据结构中的st_mode和st_size成员,st_size包含了文件的字节数大小。Unix提供的宏指令根据st_mode成员来确定文件的类型。

共享文件:

     内核用三个相关的数据结构来表示打开的文件:

 

 

      对于图10—12,可以通过dup2函数修改进程的描述符表实现I/O重定向。

 

posted @ 2017-05-04 20:20  lineaar  阅读(123)  评论(0编辑  收藏  举报