[완료]read(), write()를 이용한 복사프로그램 관련
글쓴이: asleea / 작성시간: 목, 2012/06/28 - 3:59오전
------------------------restart.h------------------------ int copyfile(int fromfd, int tofd) { char *bp; char buf[1024]; int bytesread, byteswritten = 0; int totalbytes = 0; for( ; ; ) { while((bytesread = read(fromfd, buf, 1024) == -1) && (errno = EINTR)); if(bytesread <= 0) break; bp = buf; while(bytesread > 0) { while((byteswritten = write(tofd, bp, bytesread) == -1) && (errno == EINTR)); if(byteswritten <= 0) break; totalbytes += byteswritten; bytesread -= byteswritten; bp += byteswritten; } if(byteswritten == -1) break; } return totalbytes; }
#include<stdio.h> #include<unistd.h> #include"restart.h" int main(void) { int numbytes = copyfile(STDIN_FILENO, STDOUT_FILENO); fprintf(stderr, "Numder of bytes copied: %d\n", numbytes); return 0; }
공부하고 있는 책에 예제소스입니다.
STDIN_FILENO에 내용을 복사하면 STDOUT_FILENO에 입력해주는 프로그랩입니다.
간단히 말하면 키보드로 입력을 받아 입력한 내용을 화면에 다시 뿌려주고, 입력된 내용의 byte수를 출력해주는 프로그램입니다.
그런데 입력을 주어도 화면에 출력이 되지도 않고, byte수도 0으로 출력이 되네요
재가 봐서는 무엇이 문제인지 못 찾겠어 이렇게 올리게 되었습니다.
Forums:
// 본문 코드while((
아래 bytewrite 쪽도 마찬가지고요.
좋은 하루 되세요!
감사합니다.
감사합니다. !!!
댓글 달기