시스템콜, 리눅스 프로그래밍 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도 마찬가지 문제가 있습니다.
둘다 위와 같이 괄호를 쳐주세요.
댓글 달기