Linux下文件的复制
2015-11-29 10:24
633 查看
纯干货,纯代码的。
/* copy_file.c */
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE 1024 /* 每次读写缓存大小,影响运行效率*/
#define SRC_FILE_NAME "src_file" /* 源文件名 */
#define DEST_FILE_NAME "dest_file" /* 目标文件名文件名 */
#define OFFSET 10240 /* 拷贝的数据大小 */
int main()
{
int src_file, dest_file;
unsigned char buff[BUFFER_SIZE];
int real_read_len;
/* 以只读方式打开源文件 */
src_file = open(SRC_FILE_NAME, O_RDONLY);
/* 以只写方式打开目标文件,若此文件不存在则创建, 访问权限值为644 */
dest_file = open(DEST_FILE_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if (src_file < 0 || dest_file < 0)
{
printf("Open file error\n");
exit(1);
}
/* 将源文件的读写指针移到最后10KB的起始位置*/
lseek(src_file, -OFFSET, SEEK_END);
/* 读取源文件的最后10KB数据并写到目标文件中,每次读写1KB */
while ((real_read_len = read(src_file, buff, sizeof(buff))) > 0)
{
write(dest_file, buff, real_read_len);
}
close(dest_file);
close(src_file);
return 0;
}Makefile文件:
EXEC = copy_file
OBJS = copy_file.o
HEADERS =
CC = gcc
INC = -I.
CFLAGS = ${INC} -g
all:${EXEC}
${EXEC} : ${OBJS}
${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS}
${OBJS} : ${HEADERS}
.PHONY : clean
clean :
-rm -f ${OBJS} ${EXEC}
/* copy_file.c */
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE 1024 /* 每次读写缓存大小,影响运行效率*/
#define SRC_FILE_NAME "src_file" /* 源文件名 */
#define DEST_FILE_NAME "dest_file" /* 目标文件名文件名 */
#define OFFSET 10240 /* 拷贝的数据大小 */
int main()
{
int src_file, dest_file;
unsigned char buff[BUFFER_SIZE];
int real_read_len;
/* 以只读方式打开源文件 */
src_file = open(SRC_FILE_NAME, O_RDONLY);
/* 以只写方式打开目标文件,若此文件不存在则创建, 访问权限值为644 */
dest_file = open(DEST_FILE_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
if (src_file < 0 || dest_file < 0)
{
printf("Open file error\n");
exit(1);
}
/* 将源文件的读写指针移到最后10KB的起始位置*/
lseek(src_file, -OFFSET, SEEK_END);
/* 读取源文件的最后10KB数据并写到目标文件中,每次读写1KB */
while ((real_read_len = read(src_file, buff, sizeof(buff))) > 0)
{
write(dest_file, buff, real_read_len);
}
close(dest_file);
close(src_file);
return 0;
}Makefile文件:
EXEC = copy_file
OBJS = copy_file.o
HEADERS =
CC = gcc
INC = -I.
CFLAGS = ${INC} -g
all:${EXEC}
${EXEC} : ${OBJS}
${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${OBJS}
${OBJS} : ${HEADERS}
.PHONY : clean
clean :
-rm -f ${OBJS} ${EXEC}
相关文章推荐
- linux日常管理-rsync常用选项详解
- 使用pscp在Linux、Windows间互传文件
- linux 在/etc/profile配置完jdk每次都要source
- Linux CentOS7 企业实用教程(一)
- linux下ftp常用命令
- Linux下配置安装PHP环境
- Linux_文件系统&磁盘分区
- Linux环境下SVN数据仓库迁移
- linux日常管理-rsync格式
- linux下挂载方案总结(centos 6.5)
- SSH连接ubuntu中文显示乱码问题!
- SSH Ubuntu中vi不能正常使用方向键问题!
- Ubuntu ssh远程无法连接问题
- linux top命令详解
- linux计划任务
- linux app应用如何检测USB设备热插拔
- Cobbler实现开机自动安装CentOS 7.1 X86_64
- Linux学习笔记(2)之目录操作
- linux下面误删root里面的文件夹 恢复方法~~
- 第十六天-linux文件系统特殊权限suid-sgid