linux文件操作之系统调用

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 08:40 点击:

在linux中,一切都是文件,文件为操作系统服务和设备提供了一个简单而统一的接口,这就意味者程序可以像使用文件那样使用各种设备。大多数情况下对于文件的操作只用到open,write,lseek,read,close五个系统调用。本文通过一个简单的例子来介绍这五个调用及关联内容。

    先看例子:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>

int
main( void )
{
  int file_des = open( "my_file.txt", O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR | S_IXUSR | S_IXOTH );
 
  char *write_buf = "zhujiangfeng\n";
  if ( write( file_des,write_buf, strlen( write_buf )) != strlen( write_buf ) )
  {
    write( STDERR_FILENO, "WRITE ERROR!\n", 13 );
    exit( 0 );
  }

  if ( lseek( file_des, 4, SEEK_END ) == -1 )
  {
    write( STDERR_FILENO, "SEEK ERROR!\n", 11 );
    exit( 0 );
  }
  write( file_des, "AAAAAA", 6 );

  lseek( file_des, 0, SEEK_SET );
  char read_buf[50];

  if ( read( file_des, read_buf, 50 ) == -1 )
  {
    write( STDERR_FILENO, "READ ERROR!\n", 12 );
    exit( 0 );
  }
  write( STDOUT_FILENO, read_buf, 50 );

  close( file_des );
  exit( 1 );
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  这是一个简单的读写文件的例子,先创建一个文本文件,写入一些内容,再把文本内容输出到标准输出,下面开始分析这个例子:
  1 int file_des = open( "my_file.txt", O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR | S_IXUSR | S_IXOTH );
    以读写方式打开一个新建文件 my_file.txt,指定其访问权限为 文件属主具有读,写,执行权限,组用户没有任何权限,其他用户只有执行权限。

    open调用用于创建或打开文件,返回一个文件描述符。
    #include<fcntl.h>
    #include<sys/stat.h>
    #include<sys/types.h>
    int open( const char *path, int oflags );
    int open( const char *path, int oflags, mode_t mode );

    第一个oen用于打开已有的文件,第二个open用于创建新文件。
    (1)oflags参数说明了文件的打开方式,值为以下一个或多个常量的“或”运算(这些常量定义在<fcntl.h>):
    O_RDONLY 只读打开
    O_WRONLY 只写打开
    O_RDWR   读,写打开
    以上常量为必选,且只能选一个,下列常量为可选:
    O_APPEND 在文件尾端追加
    O_TRUNC  将文件长度截短为0
    O_CREATE 若文件不存在,按照参数mode指定的访问权限创建
    O_EXCL   测试要创建的文件是否存在,和O_CREATE一起使用,使得文件的测试和创建是一个院子操作
    (2)mode参数指定了新建文件的访

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • /etc/fstab 详解
      • nginx主主集群
      •  LVS-NAT和LVS-DR模式的实现详解
      •  RHCE考试之磁盘配额
      • 学习笔记:ACL详解
      • suse linux双网卡双网关配置
      •  LVM逻辑卷管理器
      •  Nginx主主负载均衡架构
      • ubuntu学习Mysql

      快速直达

      操作系统导航

      LinuxWindows虚拟机
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1