IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 实现Linux系统的cp和mv命令 -> 正文阅读

[系统运维]实现Linux系统的cp和mv命令

main函数的参数

C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。

还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。

加上形参说明后,main函数应写为:

int main(int argc, const char* argv[]);

其中第一个参数argc表示参数的个数,第二个参数中argv[0]为自身运行目录路径和程序名。

argv[1]指向第一个参数、argv[2]指向第二个参数……

实际上,main函数的参数值是从操作系统命令行上获得的。

当我们要运行一个可执行文件时,在Linux运行时,后面跟上参数即可把这些实参传 送到main的形参中去。

因此我们可以借助main函数的参数来实现Linux的cp和mv命令。

文件读写

C语言标准库提供了一套用于文件读写操作的函数

//打开文件
FILE *fopen(const char*path, const char* mode);

//关闭文件
int fclose(FILE *stream);

//删除文件
int remove(const char *pathname);

//读取文件
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
    
//写入文件
size_t fwrite(const void *ptr, size_t size, size_t nmemb,ILE *stream);

实现命令

有了以上基础,我们就可以试着自己实现mv和cp命令了

借助main函数参数,我们可以获取命令的源文件(src)和目标文件(dest)的名字和目录

下面是cp命令的代码,mv代码只要在cp的基础上,使用remove函数删除src文件就可以了

#include <stdio.h>
#include <stdlib.h>

int main(int argc, const char* argv[])
{
	if(3!=argc)
	{
		return 0;
	}
	//打开src和dest文件
	FILE* src_frp = fopen(argv[1], "r");
	if(NULL==src_frp)
	{
		printf("%s打开失败,请检查!\n", argv[1]);
		return -1;
	}
	FILE* dest_fwp = fopen(argv[2],"w");
	if(NULL==dest_fwp)
	{
		printf("%s打开失败,请检查!\n", argv[2]);
		return -1;
	}

	//设置缓冲区,可以提高读写的速度
	char buf[4096];
	int ret=0;
    //循环进行读取和写入的操作
	while(ret=fread(buf,1, 4096,src_frp))
	{
		fwrite(buf,1, ret, dest_fwp);
	}
	//关闭文件
	fclose(src_frp);
	fclose(dest_fwp);
	return 0;
}
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:29:39  更:2021-08-20 15:32:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:30:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计