C言語で自作したcpコマンドが上手く動作しません
当方、プログラミングを勉強中の学生です。
先日、ファイル入出力関数を用いてcpコマンドを自作しました。
一応、コンパイルは通るのですが、コピーしたファイルを開くことができません。
そのファイルのパーミッションを確認してみたところ
「----------」となっており、読み書き実行すべて不可となっていました。
ソースは以下の通りなのですが、何が問題でしょうか。
回答よろしくお願い致します。
#include<stdio.h>
#include<fcntl.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#define SIZE 8192
int main(int argc, char *argv[])
{
int fd1, fd2;
char buf[SIZE];
if ( argc != 3 ){
char err_message[] = "ファイル名を指定して下さい。\n";
write(2, err_message, strlen(err_message));
return 1;
}
argv[0] = "mycopy";
fd1 = open(argv[1], O_RDONLY);
fd2 = open(argv[2], O_WRONLY | O_CREAT);
if (fd1 < 0 || fd2 < 0) {
char err_message[] = "ファイルをオープンできません。";
write(2, err_message, strlen(err_message));
write(2, strerror(errno), strlen(strerror(errno)));
write(2, "\n", 1);
return 1;
}
while(1) {
if (read(fd1, buf, SIZE) == 0) {
break;
} else if (read(fd1, buf, SIZE) > 0) {
write(fd2, buf, SIZE);
} else {
char err_message[] = "エラーが発生しました。";
write(2, err_message, strlen(err_message));
write(2, strerror(errno), strlen(strerror(errno)));
write(2, "\n", 1);
return 1;
}
}
close(fd1);
close(fd2);
return 0;
}
補足
「改行」を知るにはどうすればいいのですか? ファイルディスクリプタを使ってread()で読み込むのですが・・・