`

liunx下copy 指令的 实现

阅读更多
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>

int main (int argc, char* argv[]) {
	if (argc < 3) {
		fprintf (stderr, "用法:%s <源文件> <目的文件>\n", argv[0]);
		return -1;
	}

	int src = open (argv[1], O_RDONLY);
	if (src == -1) {
		perror ("open");
		return -1;
	}

	struct stat st;
	if (fstat (src, &st) == -1) {
		perror ("fstat");
		return -1;
	}

	int dst = open (argv[2], O_WRONLY | O_CREAT | O_EXCL, st.st_mode);
	if (dst == -1) {
		if (errno != EEXIST) {
			perror ("open");
			return -1;
		}

		printf ("文件%s已存在,是否覆盖?(y/n) ", argv[2]);
		int ch = getchar ();
		if (ch != 'y' && ch != 'Y')
			return 0;

		if ((dst = open (argv[2], O_WRONLY | O_CREAT | O_TRUNC,
			st.st_mode)) == -1) {
			perror ("open");
			return -1;
		}
	}

	unsigned char buf[1024];
	ssize_t bytes;

	while ((bytes = read (src, buf, sizeof (buf))) > 0)
		if (write (dst, buf, bytes) == -1) {
			perror ("write");
			return -1;
		}

	if (bytes == -1) {
		perror ("read");
		return -1;
	}

	close (dst);
	close (src);

	return 0;
}

分享到:
评论

相关推荐

    Linux究极无敌绝杀版笔记

    内容概要:记录了Linux部分常用指令、Linux重点知识点、部分大厂面试题 适用人群:Linux入门萌新、找不到好的资料的求职者、需要一份靠谱笔记的同学 使用场景:仅限个人使用 参考资料:b站up主韩顺平(个人主页:...

    Linux命令大全完整版

    Linux命令大全完整版 目 录 目 录 I 1. linux系统管理命令 1 adduser 1 chfn(change finger information) 1 chsh(change shell) 1 date 2 exit 3 finger 4 free 5 fwhois 5 gitps(gnu interactive tools ...

    构建一个Java应用的Docker镜像

    构建一个Java应用的Docker镜像 假设Java应用名为 docker-demo 1、在项目代码打成jar包:demo-docker.jar # 这里我用mvn来打包 # -Dmaven.test.skip=true --- 跳过检查 ...# COPY --- 类似于linux copy指令 # EXPOSE ---

    C语言 cp 指令 在linux/unix 运行

    cp 指令 在unix里运行 ./cp1 file1 file2 copy 一个文件file1 然后写入到 创建文件file2

    Linux基础——Linux 基本指令 ls 和 cd

    Linux 的深度玩家, 基本上都是用 Terminal 和指令 (command) 来超控电脑的。 计算机指令大部分都是和文件打交道, 比如把文件 A 移动到 文件夹B, 新建一个文件 C, 改写文件 A 的内容等. 你想黑客黑你电脑, 多半也就是...

    linux教程——很使用的那种

    linux中的文件(普通文件或设备文件等)都必须有挂在点,只有挂载到一个目录下才能访问,swap分区是不需要挂载点的,在分区的时候,将文件系统类型选为swap,挂载点自动会变为灰色。一般linux中的swap大小为内存的两倍。...

    Linux操作系统基础教程

    一.Linux下的网络服务.......................................................................................................24 二.几种重要的配置文件......................................................

    最牛的linux的shell命令集合

    了解了一些比较牛的shell命令,将会结你的shell编程产生具大影响,例如column, sshfs, ssh-copy-id,如何直接开辟一段内存空间做为硬盘,用wget直接递归下载网站, !! 代表什么, - 代表什么。都有解答。 如果喜欢就...

    Linux基础——Linux 基本指令 touch, cp 和 mv

    file1 复制成 file1copy2.-i (interactive)3.复制去文件夹4.-R (recursive)5.*复制多个文件4.mv 剪切1.移动去另一个文件夹2.重命名文件 1.前言 这次, 我们想要了解的是在 linux 中, 怎么样创建新文件, 复制, 粘贴, ...

    一套基于linux主机、stm32等平台的host端框架代码,通过AT指令控制庆科WIFI模块连接主流云平台-本人专注嵌入式领域

    嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会...

    基于linux主机、stm32等平台的host端框架代码,通过AT指令控制庆科WIFI模块连接主流云平台(本人专注嵌入式领域)

    嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会...

    linux内核 0.11版本源码 带中文注释

    * 是啊,是啊,下面这段程序很差劲,但我不知道如何正确地实现,而且好象它还能运行。如果有 * 关于实时时钟更多的资料,那我很感兴趣。这些都是试探出来的,以及看了一些bios 程序,呵! */ #define CMOS_...

    Linux uux命令用法详解

    Linux uux命令用于在远端的UUCP主机上执行指令。 uux可在远端的UUCP主机上执行指令或是执行本机上的指令,但在执行时会使用远端电脑的文件。 语法uux [-bcCIjlnrvz][-a][-g][-s][-x][--help][指令] 参数说明: -或-p...

    基于树莓派设计的多媒体播放器且支持(Windows、Linux、Android)系统(毕设/课设/竞赛/实训/项目开发)

    专为树莓派(Raspberry Pi)设计的多媒体播放器且支持(Windows、Linux、Android)系统,支持视频、音频、流媒体、图片、摄像头、动画、文本、滚动字幕、日期时间、二维码、等,支持指令控制播放、覆盖、停止、移动、等...

    Linux 101 hacks (2nd)

    技巧 75:用Magic SysRq 键实现Linux 安全重启 第十章:Apachectl 和 Httpd 实例 技巧76:传递不同的httpd 技巧77:使用一个临时DocumentRoot 而不修改httpd 技巧78:暂时提高Log 的级别 技巧79:显示Apache 内的...

    cmd操作命令和linux命令大全收集

    copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C: xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件 用参数/e...

    U-Boot在MPC8265平台上的移植与分析

    系统处理器启动时,首先执行一个预定地址处的指令,通常这个位置是只读内存,存放系统初始化或引导程序,其功能是执行CPU初始化并配置其他硬件,然后copy操作系统到RAM中。  在嵌入式Linux系统中,这些工作由...

    devkitadv-GBA开发工具

    这个控制台shell,命令行支持的是类式linux的指令,你可能不太了解,不过你不用担心呵 我们不需要记太多的命令指令,很简单的几句这可以了 就当是dos命令,只不过命令名称变了而已 下面是几个对应 ls 相当于dos下的...

    《嵌入式操作系统》课程综合实验

    最先熟悉一下我们能够用到的linux指令: ls 列出目标目录下的文件 cd 进入目录 mount&umount 挂载&卸载 tftp tftp协议下载等 mkdir 新建文件夹 touch 新建文档 vi 查看文档 cp ...

Global site tag (gtag.js) - Google Analytics