Linux系统编程——实现cp指令(应用)

news2024/11/17 21:32:03

cp指令格式

cp [原文件] [目标文件]

cp 1.c 2.c

功能是将原文件1.c复制后并改名成2.c(内容相同,实现拷贝)

这里需要引入main函数的参数解读

我们在定义函数时许多都带有参数,输入参数后便可进行定义函数内的功能执行,而main函数也不例外,其函数定义和参数格式如下:

int main(int argc,char **argv)
argc输入参数的个数
argv输入参数的字符串,字符串个数由输入参数个数决定,同时agrv[0]指向第一个字符串
#include <stdio.h>

int main(int argc,char **argv)
{
        printf("total params is %d\n",argc);
        printf("No.0 params is %s\n",argv[0]);
        printf("No.1 params is %s\n",argv[1]);
        printf("No.2 params is %s\n",argv[2]);

        return 0;
}

由编译结果可知,总共有三个输入参数,同时输出每个参数字符串内容

cp 1.c 2.c→cp为第一个参数,1.c为第二个参数,2.c为第三个参数

Linux环境下指令详解

运用文件编程知识在Linux对cp指令操作进行拆分并实现最终结果,操作如下:

1.打开原文件1.c

2.将原文件1.c内容读取到buf中

3.打开/创建目标文件2.c

4.把buf中的内容写入到目标文件2.c中

5.关闭原文件1.c和目标文件2.c

代码展示

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
	int fdSrc;
	int fdDes;

	char *readBuf = NULL;

	if(argc != 3)
	{
		printf("insert error\n");
		exit(-1);//若参数不等于3则终止运行程序
	}

	fdSrc = open(argv[1],O_RDWR);//打开原文件
	int size = lseek(fdSrc,0,SEEK_END);//计算光标移到文件尾的字节数
    lseek(fdSrc,0,SEEK_SET);//再将光标移动文件头,方便后续读取

	readBuf = (char* )malloc(sizeof(char)*size + 8);//给readBuf开辟内存空间,此处多分配8个,防止空间溢出

	int n_read = read(fdSrc,readBuf,size);//将从fdSrc中读取的内容存放到readBuf,长度为1024个字节之内
	
	fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);//打开目标文件,若没有目标文件则创建一个并打开,若目标文件存在且其中有其他数据,则会清楚数据方便后续写入

	int n_write = write(fdDes,readBuf,strlen(readBuf));	//将readBuf中的数据写入fdDes中

	close(fdSrc);
	close(fdDes);

	return 0;
}

可见,通过cp指令可以拷贝一个内容与7.c一样但名字不同的new.c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1200493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像相似度对比方法

1.哈希方法&#xff0c;其中包括均值哈希、插值哈希、感知哈希方法。计算出图片的哈希值&#xff0c;一般使用汉明 距离计算两个图片间的差距。 2.直方图算法&#xff0c;其中包括灰度直方图算法&#xff0c;RGB直方图算法&#xff0c; 3.灰度图算法&#xff1a;MSE、SSIM、…

改进YOLO系列 | YOLOv5/v7 引入Super Token Sampling ViT | 《CVPR 2023 最新论文》

论文地址:https://arxiv.org/abs/2211.11167 代码地址:https://github.com/hhb072/STViT 视觉变换器已经在许多视觉任务中取得了令人印象深刻的性能。然而,它在捕捉浅层的局部特征时可能会受到高度冗余的影响。因此,引入了局部自注意力或早期卷积,这些方法牺牲了捕捉长距…

Vue3 setup函数

一、setup函数介绍 setup函数是Vue3中全新的一个配置项&#xff0c;值为一个函数&#xff0c;是所有 Composition API 中“表演的舞台”。 我们在Vue2中用到的所有数据、方法&#xff0c;都需要配置在setup中。 这是我们在Vue2中的写法&#xff1a; 这是我们在Vue3 setup中的…

JS移动端触屏事件

在我们PC端中有许多的事件&#xff0c;那我们在移动端有没有事件呢&#xff1f;让我为大家介绍一下移动端常用的事件&#xff0c;触屏事件 触屏事件 touch (也称触摸事件)&#xff0c;Android 和IOS 都有 touch 对象代表一个触摸点。触摸点可能是一根手指&#xff0c;也可能是一…

【设计原则篇】聊聊单一职责原则

因为是刚开始写软件设计相关的文章&#xff0c;这里先大概介绍下&#xff0c;软件设计相关的知识图谱。大概分类的话&#xff0c; 编程范式 软件设计相关原则 Don’t Repeat Yourself (DRY)Keep It Simple, Stupid(KISS)Program to an interface, not an implementationYou Ai…

电脑版微信收到的图片怎么样自动保存到指定文件夹中?

8-5 在平时的工作中&#xff0c;如果你每天都需要接收并保存很多同事发来的图片&#xff0c;如何实现自动保存在微信上接收到的图片呢&#xff1f;本文的方法也许适合你&#xff0c;它可以自动把微信上收到的图片、视频、文件帮你保存到指定地方&#xff0c;可以大大地提高工作…

2023年【起重机械指挥】考试试卷及起重机械指挥操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年起重机械指挥考试试卷为正在备考起重机械指挥操作证的学员准备的理论考试专题&#xff0c;每个月更新的起重机械指挥操作证考试祝您顺利通过起重机械指挥考试。 1、【多选题】《中华人民共和国特种设备安全法》…

【狂神说Java】Nginx详解

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;狂神说Java &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远…

postman上传照片,视频,音频等上传文件操作测试方法

Postman上传照片&#xff0c;视频&#xff0c;音频等上传文件操作测试方法 新建一个request&#xff0c;更改请求方式&#xff0c;点击Body 勾选form-data ,key后面下拉框选择File 上一步勾选后Value即出现选择本地文件按钮&#xff0c;填写Key&#xff0c;选择文件即可 此时…

【 第十三章】软件设计师 之 面向对象程序设计

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 备考资料导航 软考好处&#xff1a;软考的…

Hutool Excel导出 配置宽度自适应 工具类

简介&#xff1a;Hutool是一款十分好用的开发工具集&#xff0c;里面包含了大部分日常开发常用的工具&#xff0c;使用简单方便&#xff0c;可以大大提升日常开发效率&#xff0c;十分推荐大家使用。这里简单总结一下基于Hutool的Excel使用。 一、Hutool依赖 <!-- Excel导出…

从0开始python学习-34.pytest常用插件

目录 1. pytest-html&#xff1a;生成HTML测试报告 2.pytest-xdist&#xff1a;并发执行用例 3. pytest-order&#xff1a;自定义用例的执行顺序 4. pytest-rerunfailures&#xff1a;用例失败时自动重试 5. pytest-result-log:用例执行结果记录到日志文件 1. pytest-html…

Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2)

By: Ailson Jack Date: 2023.11.12 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/163.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…

CnosDB 狂欢!全面支持 Helm 部署,轻松搞定你的分布式时序数据库!

大家好&#xff01;今天有个热辣新闻要和大家分享——CnosDB 狂欢时刻来啦&#xff0c;全面支持 Helm 部署&#xff01;如果你是物联网、工业互联网、车联网或者IT运维的粉丝&#xff0c;那你绝对不能错过这个重磅消息&#xff01; CnosDB Helm Chart 究竟是啥&#xff1f; 别…

C# Socket通信从入门到精通(8)——单个异步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(7)——单个异步TCP服务器监听单个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

通过easyexcel导出数据到excel表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出&#xff0c;使用之前easyui构建的歌曲列表crud应用&#xff0c;添加一个导出按钮&#xff0c;点击的时候直接连接后端接口地址&#xff0c;在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

保姆级jupyter lab配置清单

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

由浅入深学习统计学 - 常用统计图形学习

学习笔记 第一章- 信息图形化 图形化&#xff08;可视化&#xff09; 在一堆数据中&#xff0c;自己发现了这些数据的规律&#xff0c;但是无法表述给其他人知道&#xff0c;图形化就是便于他人理解数据的规律的展示的手段。 或者说我们也可以从统计的数据图形中发现某些没有…

计算机毕业设计选题推荐-个人记账理财微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

NLP实战命名实体识别

文章目录 一、导入相关包二、加载数据集三、数据预处理四、创建模型五、创建评估函数六、配置训练参数七、创建训练器八、模型训练九、模型预测 一、导入相关包 DataCollatorForTokenClassification 用于 Token 级别的分类任务 import evaluate from datasets import load_da…