linux系统io的copy
#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的更多相关文章
- linux标准io的copy
---恢复内容开始--- 1.linux标准io的copy #include<stdio.h> int main(int argc,char **argv) { if(argc<3) ...
- Linux系统IO分析工具之iotstat常用参数介绍
Linux系统IO分析工具之iotstat常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.安装iostat [root@flume115 ~]# yum - ...
- Linux系统IO分析工具之iotop常用参数介绍
Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...
- 使用SCP命令在多个linux系统间进行copy拷贝,上传,下载...
一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从 ...
- linux系统IO操作
本文重点说明下面内容: 什么是标准IO,什么是文件IO? 什么是Direct IO? O_SYNC标识有什么意义? 各个层面的缓存如何同步? 还在page cache中的脏页可以读写吗? IO路径上的 ...
- Linux系统编程001--系统IO
1. 文件系统:用来存储.组织.管理文件的一套方式.协议 2. 文件 文件的属性:i-node唯一表示一个文件的存在与否 文件的内容 3. Linux系统如何实现文件的操作? 点击查看代码 硬件层: ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- Linux系统编程--文件IO操作
Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...
- Linux系统编程@终端IO
Linux系统中终端设备种类 终端是一种字符型设备,有多种类型,通常使用tty 来简称各种类型的终端设备.终端特殊设备文件一般有以下几种: 串行端口终端(/dev/ttySn ) ,伪终端(/dev ...
随机推荐
- Javascript学习笔记:6种实现继承的方式
①原型链式继承 function Person(name){ this.name=name; } Person.prototype.getName=function(){ return this.na ...
- CSS-浮动篇float
Float是一个强大的属性,但是它也会困扰我们如果我们不知道它的工作原理的话.这篇文章主要介绍float的原理和基本用法. 我们可以看到float在印刷世界的应用-杂志.很多杂志文章都是左边一个图片, ...
- Android 签名工具 shell脚本
signApk.sh #!/bin/bash #$1 signed and unaligned apk #$2 unsigned apk #$3 aligned apk #./signApk.sh t ...
- iOS Question
Q1: dyld: Library not loaded: @rpath/libswiftCore.dylib 1. 退出 Xcode2. 重启电脑3. 找到 这个 DerivedData 文件夹 删 ...
- runtime运行机制方法学习
runtime这玩意第一次听说时都不知道是什么,经过了解后才知道它就是oc动态语言的机制,没有它那oc就不能称为动态语言.在之前可能大家对runtime了解都不深,随着编程技能的日益加深和需要,大家开 ...
- IP和端口的相关检测
1.查看自己电脑的ip,使用ipconfig命令 2.检测某个ip是否可以连通,直接使用ping命令 3.windows下查看本机都有哪些端口开放,使用netstat -anp tcp 命令 4.查看 ...
- rpc选择标准
衡量RPC好用与否的几条标准: 真的像本地函数一样调用 使用简单,用户只需要关注业务即可 灵活,RPC调用的序列化方式可以自由定制,比如支持json,支持msgpack等方式 http://www.o ...
- java并发编程-Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion ...
- ios基础篇(十八)——Delegate 、NSNotification 和 KVO用法及其区别
一.Delegate Delegate本质是一种程序设计模型,iOS中使用Delegate主要用于两个页面之间的数据传递.iphone中常用@protocol和delegate的机制来实现接口的功能. ...
- 使用excel快速制表 拒绝粗心
办公室打印个表格 使用了word打印后 发现 id重复很多 只好网上找了点excel 2003资料 学习小 快速制作表格 新建一个excel文件. 在新建excel中,用鼠标选中需要的表格行数列数,然 ...