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,转载时请与本人取得联系,谢谢!)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OSA是Open System Adminstrator 的简称,意指开源,开放的运维管理系统。 OSA监控精灵是OSA开源团队针对目前服务器运维、监控和报警提出的一个开源、 易用、实用的跨平台服务器运维监控管理平台。   为什么使用OSA监控精灵? 作为各站长或者是网站维护人员以及日常运维人员,您也许经常遇到以下场景: 用户打开网站首页,出现502,504 等页面,用户不知所措。 用户访问页面时,加载缓慢,点击链接,半天无反应,无奈的离开。 由于服务器或者网络原因,网站突然无法访问,导致用户无法打开网页。 客服整天都接到用户的报怨,然而我们却没有办法赶在用户之前发现故障。 非常遗憾的是,有时候这些情况,连你自己也认为是用户的抱怨,甚至不相信在你维护的范围会出现用户所说的那些情况,更不用说及时采取措施了。 OSA监控精灵的目的正是帮助您监控网站可用率,响应速度,当发生这些情况时会提前主动告警,通过(邮件,短信,MSN等)第一时间通知您。 让问题赶在用户之前能得到及时处理,最大限度的提高网站的可用性,稳定性。 通过OSA监控精灵,您可以创建成百上千条监控记录,可以对系统指标以及服务进行性能分析, 最重要的是,OSA监控精灵对用户是完全开放源代码的,所有基础功能都是免费使用的。   您也许还遇到以下场景: 终于相信用户的抱怨是有道理的,但是网站性能瓶颈究竟在哪里呢? 网站访问量不断攀升,大家都乐坏了,可是,什么时候需要扩容呢?增加服务器还是增加带宽? 费尽周折实施了性能优化,但是效果究竟如何呢?性能的提升能否量化呢? 有没有办法,监控到故障时预先定义一套处理问题的办法,解决问题呢? 对于网站的维护,您是否真的有一套跟得上访问量的运维解决方案吗? 这些问题,OSA监控精灵将一对一的为用户提供更深入的服务,通过OSA监控精灵对各种服务的数据性能分析,为大家提供有效解决问题的方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值