中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
open system call (原创)
作者:未知 时间:2005-07-27 23:27 出处:CSDN 责编:chinaitpower
              摘要:open system call (原创)

open 是为了得到file descriptor(文件记述子)system call

open system call2个或是3个参数。

第一参数是被openingfilepass(路径)。

第二参数是表示open方法的flags(标识),有以下几种类型:

              O_RDONLY   file read only(读取专用)

              O_WRONLY   file write only(写入专用)

              O_RDWR     file read and write(读写两用)

              O_CREAT     做成新的file

              O_APPEND   追加到原有的file

              O_TRUNC    truncate(删除)原有的file。和O_CREAT共用。

              O_EXCL      file存在的场合错误。和O_CREAT共用。

先指定flagsO_RDONLYO_WRONLYO_RDWR的任意一个,剩下的flags符号取论理和来决定。

 

第三参数是指定文件做成时的permission mode(许可模式)。比如说0777是谁都可以读写执行的文件,而0666是谁都可以读写的文件。这些看着是不大容易理解的数字,像下面一样每3bit区分开来就容易理解了。

              0644=110 100 100                 0666=110 110 110

                          rw- r-- r--                                   rw- rw- rw-

              0755=111 101 101                 0777=111 111 111

                          rwx r-x r-x                                rwx rwx rwx

 

程序例:

以下的sample1.c是第一参数指定文件大小,第二参数指定文件名,做成指定大小的文件的程序。

$ cc sample1.c

$ ./a.out 10000 zzz

size = 10000,fd = 3

$ ls -lg zzz

  10 -rw-r--r--    1 kix31117 J03A        10000 Jun 17 01:44 zzz

$

 

program list:

     1  /* sample1.c*/

     2

     3  #include <stdio.h>

     4  #include <fcntl.h>

     5

     6  #define BSIZE 512

     7  char buf[BSIZE];

     8

     9  main(int argc,char **argv){

    10    int fd,size;

    11   

    12    if(argc != 3){

    13      fprintf(stderr,"usage: %s size filename\n",argv[0]);

    14      exit(1);

    15    }

    16

    17    size = atoi(argv[1]);

    18    fd = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644);

    19

    20    printf("size = %d,fd = %d\n",size,fd);

    21

    22    if(fd<0){

    23      perror(argv[2]);

    24      exit(1);

    25    }

    26

    27    mkfile(fd,size);

    28   

    29    close(fd);

    30    exit(0);

    31  }

    32

    33  mkfile(int fd,int size)

    34  {

    35    while(size>BSIZE){

    36      write(fd,buf,BSIZE);

    37      size -= BSIZE;

    38    }

    39

    40    write(fd,buf,size);

    41  }

(以上文章的版权在fastso,转载时请与本人取得联系,谢谢!)


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有