普通文件的拷贝

本文介绍了一个简单的C语言程序,该程序使用系统调用如open、read和write来实现两个文件之间的拷贝功能。程序首先打开源文件进行读取,并创建目标文件用于写入;然后循环读取源文件内容并将其写入目标文件,直至源文件所有内容被完全复制。

普通文件的拷贝

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

int main(int argc ,char *argv[]) 
{

	//打开文件
	  
	int fd1 = open(argv[1],O_RDONLY);
	if(fd1 == -1)
	{
		perror("open failed\n");
		return -1;	
	}
	int fd2 = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC , 0666);
	if(fd2 == -1)
	{
		perror("open failed\n");
		return -1;	
	}

	char buf[10]={0}; 


	while(1)
	{
		int r =read(fd1,buf,10);
		if(r == 0)//读完了
		{
			break;
		}
		if(r == -1)
		{
			perror("read fd1 error\n");
			return -2;
		}
		if(r <= 10 && r > 0)
		{
			write(fd2,buf,r);
		}
	}

}
### Linux 系统中复制普通文件的命令和方法 在 Linux 系统中,复制普通文件的主要命令是 `cp`,它来源于英文单词 “copy”,用于将一个或多个文件从源位置复制到目标位置[^4]。以下是关于如何使用 `cp` 命令复制普通文件的具体说明: #### 使用语法 ```bash cp [选项]... 源文件 目标文件 ``` #### 示例代码 以下是一些常见的 `cp` 命令用法示例: 1. **简单复制文件** 将一个文件复制到同一目录下的另一个文件名: ```bash cp source_file.txt destination_file.txt ``` 2. **复制文件到另一个目录** 将文件复制到指定的目标目录中: ```bash cp source_file.txt /path/to/destination_directory/ ``` 3. **保留文件属性复制** 使用 `-p` 选项可以保留文件的时间戳和权限等属性: ```bash cp -p source_file.txt /path/to/destination_directory/ ``` 4. **递归复制目录** 如果需要复制整个目录及其内容,可以使用 `-r` 或 `-R` 选项: ```bash cp -r source_directory/ /path/to/destination_directory/ ``` 5. **强制覆盖目标文件** 使用 `-f` 选项可以强制覆盖目标文件而不提示: ```bash cp -f source_file.txt destination_file.txt ``` 6. **交互式复制** 使用 `-i` 选项可以在覆盖文件前询问用户确认: ```bash cp -i source_file.txt destination_file.txt ``` #### 注意事项 - `cp` 命令无法复制特殊文件或设备文件(例如 `/dev/sda`),对于这些场景需要使用 `dd` 命令[^1]。 - 如果目标文件已存在且未使用 `-i` 选项,`cp` 命令会默认覆盖目标文件。 ### 总结 `cp` 命令是 Linux 系统中复制普通文件的核心工具,支持多种选项以满足不同的需求。通过上述示例,用户可以根据具体场景选择合适的参数完成文件复制操作[^4]。 ```bash # 示例:复制文件并保留属性 cp -p source_file.txt /path/to/destination_directory/ ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值