代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <pthread.h>
int main(int agrc,char *argv[]){
char buf[1024];
int n = 0;
/*以只读方式打开文件1*/
int fd1 = open(argv[1], O_RDONLY);
/*调试可用*/
// int fd1 = open("./test.txt",O_RDONLY);
if(fd1 == -1){
/*若文件不存在则输出如下*/
perror("open argv[1] error");
exit(1);
}
/*
O_RDWR 表示读写文件权限
O_CREAT 表示若文件不存在可创建文件
O_TRUNC 如果文件已经存在,删除文件内容(截断为0长度)
*/
int fd2 = open(argv[2], O_RDWR | O_CREAT | O_TRUNC,0664);
/*调试可用*/
// int fd2 = open("./test2.txt", O_RDWR | O_CREAT | O_TRUNC,0664);
/*
*read函数
*@param1 fd:文件描述符
*@param2 buf:读取缓冲区
*@param3 count:缓冲区大小
*@return 0:读到文件末尾
>0:读到的字节数
-1:读取失败,设置errno
*/
/*
*write函数
*@param1 fd:文件描述符
*@param2 buf:从文件中读取后写入的缓冲区
*@param3 count:缓冲区大小
*@return 成功:写入的字节数
失败:-1,设置errno
*/
while((n = read(fd1 ,buf ,1024)) != 0)
{
write(fd2,buf,n);
}
close(fd1);
close(fd2);
return 0;
}
Makefile如下:
TARGET = main
OBJS = main.o
SRC = main.c
CC = cc
CFLAGS = -o
$(TARGET) : $(OBJS)
$(CC) $(CFLAGS) $@ $^
$(OBJS) : $(SRC)
$(CC) -c $^ -o $@ -g
.PHONY:clean
clean:
rm -f $(TARGET) *.o