read,write,creatを使ったファイルのコピー

Last-modified: 2012-08-19 (日) 13:16:00

#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>

#define BUFFSIZE 4096

#define MODE 0644

int

main(int argc, char *argv[])

{

int r_fd, w_fd, nbyte;

char buf[BUFFSIZE];

if (argc !=3) {

fprintf(stderr, "useage:mcp file1 file2\n ");

return -1;

}

r_fd = open(argv[1], O_RDONLY);

if (r_fd == -1) {

fprintf(stderr, "can't open %s\n", argv[1]);

return -1;

}

w_fd = creat(argv[2], MODE);

if (w_fd == -1) {

fprintf(stderr, "can't create %s\n", argv[2]);

return -1;

}

while *1 > 0) {

if (write(w_fd, buf, nbyte) != nbyte) {

fprintf(stderr, "can't write %s\n", argv[2]);

return -1;

}

}

if (nbyte == -1) {

fprintf(stderr, "can't read %s\n", argv[1]);

return -1;

}

if (close(r_fd) == -1 || close(w_fd) == -1) {

fprintf(stderr, "can't close file\n");

return -1;

}

return 0;

}

$ cmp file1 fileで確認


*1 nbyte = read(r_fd, buf, BUFFSIZE