#include<stdio.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

int main(int argc,char *agrv[])

{

if(argc<3)

{

printf("Please use:mycp file1 file2\n");

return -1;

}

int file1_fd=open(agrv[1],O_RDONLY);

if(file1_fd<0)

{

return -1;

}

int len=lseek(file1_fd,0,SEEK_END);//移动到文件尾部

lseek(file1_fd,0,SEEK_SET);//文件指针恢复文件头

int file2_fd=open(agrv[2],O_WRONLY|O_CREAT,00777);//00777打开的权限

if(file2_fd<0)

{

close(file1_fd);

return -1;

}

char buf[len];

int ret=read(file1_fd,buf,len);

ret=write(file2_fd,buf,ret);

close(file1_fd);

close(file2_fd);

return 0;

}

1.打开文件

int open(const char *pathname, int flags);

参数:

const char *pathname--要打开的文件路径

int flags---打开文件的方式(权限)

O_RDWR---打开文件可读可写

O_RDONLY--只读

O_WRONLY--只写

O_CREAT--创建

O_APPEND---追加

返回值:文件描述符:(非负整数)

int fd:打开成功返回非负整数, 打开失败返回-1

程序一运行系统就会打开3个文件(0,1,2)输入,输出,出错

2.文件偏移:lseek

#include <sys/types.h>

#include <unistd.h>

off_t lseek(int fd, off_t offset, int whence);

参数:

int fd:文件描述符

off_t offset:相对whence的偏移量(正往后偏移,负数往前偏移)

int whence:参照位置文 件当前位置SEEK_CUR,文件头SEEK_SET,文件尾SEEK_END

off_t len:偏移量

例子:

off_t len = lseek(fd, 0, SEEK_END); ---会得到文件大小len

lseek(fd, 0, SEEK_SET);--把文件指针恢复到文件开头

3.往文件中写数据:write

ssize_t write(int fd, const void *buf, size_t count)

参数:

int fd:打开文件的描述符

const void *buf:写入文件中的数据

size_t count:最长可以写多少个字节

ssize_t :实际写到文件中字节数

例子:

char buf[] = "爱我中华";

int len = write(fd, buf, sizeof(buf));

系统文件例子:

4.读数据:read

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

参数:

int fd:打开文件的描述符

void *buf:用来保存从文件中读出来的数据

size_t count:最长可以读多少个字节

ssize_t :实际读到数据字节数

例子:

char buf[128];

int len = read(fd, buf, sizeof(buf));

5.主函数:main传递参数

int main(int argc, char **argv)//或argv[]

参数:main -l -a

int argc:程序运行时候传入的参数个数 3

char **argv:程序运行时候传入的参数列表 (main, -l, -a)

例子:

int main(int argc, char **argv)

{

printf("argc = %d\n", argc);

printf("%s %s %s\n",argv[0], argv[1], argv[2]);

int fd1 = open(argv[1], O_RDONLY);

int fd2 = open(argv[2], O_WRONLY|O_CREAT, 00777);

}

程序运行 ./main file1 file2

linux系统io的copy的更多相关文章

  1. linux标准io的copy

    ---恢复内容开始--- 1.linux标准io的copy #include<stdio.h> int main(int argc,char **argv) { if(argc<3) ...

  2. Linux系统IO分析工具之iotstat常用参数介绍

    Linux系统IO分析工具之iotstat常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.安装iostat [root@flume115 ~]# yum - ...

  3. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

  4. 使用SCP命令在多个linux系统间进行copy拷贝,上传,下载...

    一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从 ...

  5. linux系统IO操作

    本文重点说明下面内容: 什么是标准IO,什么是文件IO? 什么是Direct IO? O_SYNC标识有什么意义? 各个层面的缓存如何同步? 还在page cache中的脏页可以读写吗? IO路径上的 ...

  6. Linux系统编程001--系统IO

    1. 文件系统:用来存储.组织.管理文件的一套方式.协议 2. 文件 文件的属性:i-node唯一表示一个文件的存在与否 文件的内容 3. Linux系统如何实现文件的操作? 点击查看代码 硬件层: ...

  7. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  8. Linux系统编程--文件IO操作

    Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...

  9. Linux系统编程@终端IO

    Linux系统中终端设备种类  终端是一种字符型设备,有多种类型,通常使用tty 来简称各种类型的终端设备.终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn ) ,伪终端(/dev ...

随机推荐

  1. firefox阅读模式

    并不是所有的网页都可以转换为阅读模式的,所以遇到一些识别不了的网页时,可以在地址栏输入“about:reader?url=网址”后回车即可.

  2. 常用webservice接口

    商业和贸易: 1.股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebSe ...

  3. openstack 流量控制

    G版的流量控制,可以在horizon通过对flavor进行配置来实现 1.有admin权限,点击admin进入管理界面:点击Flavors,选取要控制的flavor:点击more,找到View Ext ...

  4. Android studio环境搭建

    首先要下载jdk,下载好以后配置环境变量,这里略过,不会的可以百度搜索,这里附上jdk下载地址:http://pan.baidu.com/s/1Xrmqy 下载Android studio 软件,下载 ...

  5. 程序设计入门——C语言 第2周编程练习 1时间换算(5分)

    1 时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果 ...

  6. [WebLoad] 使用WebLoad进行Web Application 性能测试的流程

    1. 打开WebLOAD IDE录制或编写一个脚本文件,成功后会生成一个后缀为“.wlp”的文件. 2. 打开WebLOAD Console创建一个Load Template,创建过程当中需要添加“. ...

  7. centos6.5安装sublime text 2

    今天在看ueillemmx的博客的时候,看到一神级编辑器,随即安装试了试,我了个去,果然好用,自动补全,自动对齐,样样精通啊! 下面是根据ueillemmx的步骤在CentOS上安装Sublime的过 ...

  8. JDK注解替代Hibernate的Entity映射

    1.在entity(实体类)模块中使用注解 1_1.注解的位置出现在 [类定义的前面] 和 [属性的get方法前面] [属性的get方法前面] Java代码: package app.entity; ...

  9. mysql 配置 utf8 依然乱码

    mysql 乱码问题排除方案: 1.检查数据库及数据表是不是utf8字符集 2.查看一下jdbc.properties配置的数据库url 是否配置了characterEncoding=UTF-8或者在 ...

  10. 对checkbox 的checked的一些总结

    在做一个jquery树形结构的复选框选择的效果. 遇到的问题: 1.jquery复选框判断是否被选中 $(check).attr("checked"),可能提示为undefied: ...