#Linux系统编程(read,open,close,write综合练习)

文章介绍了在Ubuntu16.04.7环境中,使用C语言通过不传参和传参两种方式实现文件复制,包括`main.c`代码示例以及makefile编译指令。
摘要由CSDN通过智能技术生成

(一)发行版:Ubuntu16.04.7


(二)记录:

(1)不传参,指定拷贝文件,指定复制到文件

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

int main(int argc,char *argv[])
{
int copya_fd;  
int copyb_fd;
ssize_t read_byte;
ssize_t write_byte;

char buff[36]={0};

//打开要复制的文件
copya_fd = open("copya.c",O_RDWR);
if(copya_fd == -1)
	printf("fail to open copya.c\n");
else
	printf("open copya.c successfully:%d\n",copya_fd);
//打开将要复制到的文件
copyb_fd = open("copyb.c",O_RDWR|O_CREAT,0666);
if(copyb_fd == -1)
	printf("fail to open copyb.c\n");
else
	printf("open copyb.c successfully:%d\n",copyb_fd);
//读取文件内容到buff中
read_byte=read(copya_fd,buff,36);
write_byte=write(copyb_fd,buff,36);
printf("read %d bytes from copya.c\n",read_byte);
printf("write %d bytes to copyb.c\n",write_byte);
//关闭文件
close(copya_fd);
close(copyb_fd);

return 0;
}







 makefile

copy:main.c
	gcc main.c -o copy

clean:
	rm -rf copy copyb.c

 (2)参入文件夹拷贝

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

int main(int argc,char *argv[])
{
int copya_fd;  
int copyb_fd;
ssize_t read_byte;
ssize_t write_byte;

char buff[36]={0};

if(argc != 3)
{
printf("error number of file\n");
return 0;
}
//打开要复制的文件
copya_fd = open(argv[1],O_RDWR);
if(copya_fd == -1)
	printf("fail to open copyed\n");
else
	printf("open copyed successfully:%d\n",copya_fd);
//打开将要复制到的文件
copyb_fd = open(argv[2],O_RDWR|O_CREAT,0666);
if(copyb_fd == -1)
	printf("fail to open copy\n");
else
	printf("open copy successfully:%d\n",copyb_fd);
//读取文件内容到buff中
read_byte=read(copya_fd,buff,36);
write_byte=write(copyb_fd,buff,36);
printf("read %d bytes from copyed\n",read_byte);
printf("write %d bytes to copy\n",write_byte);
//关闭文件
close(copya_fd);
close(copyb_fd);

return 0;
}








makefile

copy:main.c
	gcc main.c -o copy

chuancan:chuancan.c
	gcc chuancan.c -o chuancan

clean:
	rm -rf copy copyb.c chuancan

第二种方法中,因为./exe为第一个参数,所以为argv[0],所以我们传入的参数实际为argv[1]和argv[2]。 所以我们的argv[1]为copya.c,argv[2]为copye.c

./chuancan copya.c copye.c


(三)命令:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值