Chinaunix首页 | 论坛 | 博客
  • 博客访问: 352026
  • 博文数量: 80
  • 博客积分: 1750
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-13 11:35
文章分类
文章存档

2014年(3)

2013年(1)

2012年(54)

2011年(22)

分类: C/C++

2012-10-28 16:39:43

    
         通过open(),read(),write()函数实现简单的拷贝命令mycp
用到的主要的3个函数的原型如下:

  1. int open(const char *pathname, int flags, .../*mode_t mode*/);
  2. ssize_t read(int filedes, void *buf, size_t nbytes);
  3. ssize_t write(int filedes, void *buf, size_t nbytes);

下面实例演示了使用文件读写函数实现一个简单的拷贝命令,该程序首先判断命令行参数是否合法,之后打开两个文件,如果目标文件不存在,则创建,

程序的流程图图下:


mycp.c源程序如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h>
  4. #include <unistd.h>

  5. int main(int argc, char **argv)
  6. {
  7.     char buf[MAX];
  8.     int in, out;
  9.     int n;

  10.     if(argc != 3)
  11.              exit(1);
  12.     if((in = open(argv[2], O_RDONLY)) == -1){
  13.           perror("fail to open");
  14.           exit(1);
  15.     }

  16.     if((out = open(argv[1], O_WRONLY | O_TRUNC | O_CREAT)) == -1){
  17.            perror("fail to open");
  18.            exit(1);
  19.     }

  20.     while((n = read(in, buf, MAX)) > 0)
  21.            if(write(out, buf, n) != n){
  22.                   perror("fail to write");
  23.                   exit(1);
  24.            }
  25.       if(n < 0){
  26.               perror("fail to read");
  27.               exit(1);
  28.       }

  29.       printf("copy done\n");
  30.       close(in);
  31.       close(out);

  32.       return 0;
  33. }

阅读(1323) | 评论(0) | 转发(0) |
0

上一篇:how to compile a kernel

下一篇:tcpdump使用总结

给主人留下些什么吧!~~