Unix 文件I/O 函数- dngc - 博客园

文件描述符

  通常,一个进程启动时,都会打开 3 个文件:标准输入、标准输出和标准出错处理。这3 个文件分别对应文件描述符为 0、1和2也就是宏替换 STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO 。这三个符号常量的定义位于头文件 unistd.h。

  文件描述符的有效范围是 0 到 OPEN_MAX。一般来说,每个进程最多可以打开 64 个文件(0 — 63)。对于 FreeBSD 5.2.1、Mac OS X 10.3 和 Solaris 9 来说,每个进程最多可以打开文件的多少取决于系统内存的大小,int 的大小,以及系统管理员设定的限制。Linux 2.4.22 强制规定最多不能超过 1,048,576 。 


大多数 UNIX 文件 I/O 只需用到6个函数: open、create、read、write、lseek 以及 close 。


open 函数 

int open(const char *pathname, int oflag, ... /* mode_t mode */);  






create 函数 

          S_IRUSR         user-read           用户-读

          S_IWUSR        user-write          用户-写

          S_IXUSR         user-execute      用户-执行

          S_IRGRP         group-read        组-读

          S_IWGRP        group-write       组-写

          S_IXGRP         group-execute   组-执行

          S_IROTH         other-read         其它-读

          S_IWOTH       other-write         其它-写

          S_IXOTH        other-execute     其它-执行


creat的一个不足之处是它以只写方式打开所创建的文件。现在基本都用 open 函数替代它了。


close 函数 

close 函数用于关闭打开的文件,函数定义在文件 <unistd.h> 中,函数原形为: 


read 函数 

用 read 函数从打开文件中读数据。定义在文件 <unistd.h> 中,函数原形为:


write 函数 

用write函数向打开文件写数据。定义在 <unistd.h> 中,函数原形为:

程序示例: 

将标准输入复制到标准输出
#include <unistd.h>
#include 
<stdio.h>

#define BUFFSIZE 8192

int main( void ){
    
int n;
    
char buff[BUFFSIZE];

    
while( (n= read( STDIN_FILENO, buff, BUFFSIZE ) )> 0 )
      
if( write( STDOUT_FILENO, bufff, n )!= n ){
        printf(
"Write error\n"); return 0; }

    
if( n< 0 ) { printf("Read error\n" ); return 0; }

    
return 0;
}


lseek 函数

返回值:新的偏移量(成功),-1(失败)

 



郑重声明:资讯 【Unix 文件I/O 函数- dngc - 博客园】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——