Hi guys,
Today, I am going to share a small utility that I created when I was in college. Yeah! It’s something like old school stuff! But it was fun.
Copying a file to one location to another using C Language. It is same as cp shell command. I hope that it will help college guys or freshers who are working in C.
Here is the code: copy.c
#define BUFSIZE 1024
#include <fcntl.h>
#include <sys/stat.h>
int main(int argc, char**argv) {
int fd1, fd2, n;
char buf[BUFSIZE];
if(argc != 3) {
printf("\n In CP command : Too few or Bad arguments ");
printf("\n USAGE: copy <source> <destination>");
return(0);
}
if((fd1 = open(argv[1], O_RDONLY)) == -1) {
printf("\n In CP command : Error opening Source File");
return(-1);
}
if((fd2 = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH)) == -1) { //Mode 664
printf("\n In CP command : Error opening Destination File");
return(-1);
}
while((n=read(fd1, buf, BUFSIZE)) > 0) {
write(fd2, buf, n);
}
close(fd1);
close(fd2);
return(0);
}
Compile it:
gcc copy.c
You will see that a compiled file “a.out” is generated in the same directory.
To run it:
./a.out "source-file" "destination-file"
For example,
./a.out /home/user/test.c /home/user/codes/newtest.c
That’s it guys. Have fun!
Critics/suggestion are very much welcome.
Have a nice day ahead.
![]()
Leave a Reply