시스템콜, 리눅스 프로그래밍 cp 구현
글쓴이: danji / 작성시간: 목, 2020/04/30 - 4:58오전
리눅스 명령어 중 cp를 구현하는 코드입니다. cygwin으로 돌려보니 자꾸 프로그램 종료가 안됩니다.
코드에서 잘못된 점이 있다면 알려주시면 감사하겠습니다
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
int fd1,fd2;
ssize_t nread;
char buffer[1024];
if (argc !=3) {
fprintf(stderr, "usage : mycp file1 file2");
exit(-1);
}
if (fd1 = open(argv[1], O_RDONLY) <0) {
perror(argv[1]);
exit(-1);
}
if (fd2 = open(argv[2], O_WRONLY | O_CREAT | O_EXCL,0644) < 0) {
fprintf(stderr, "파일 %s가 이미 존재합니다", argv[2]);
exit(-1);
}
while ((nread = read(fd1, buffer, 1024)) > 0) {
if (write(fd2, buffer, nread) < nread) {
break;
}
}
close(fd1);
close(fd2);
return 0;
}Forums:


operator precedence
때문입니다.
이 라인에서 <가 먼저 수행되고 = 가 수행됩니다. 따라서 0 아니면 1이 들어가게 되요.
그 아래 open도 마찬가지 문제가 있습니다.
둘다 위와 같이 괄호를 쳐주세요.
댓글 달기