Re: 71.11 질문
, 도장_ 관리자님이 작성FILE로 선언하고 파일에 쓰기를 하는 것도 스트림 쓰기입니다.
stdin - 표준 입력
stdout - 표준 출력
stderr - 표준 에러
세 가지 기본 스트림이 있습니다. stdout에 쓰기를 하면 화면에 출력이 됩니다.
심사문제는 화면에 출력된 텍스트 비교로 판단하기 때문에 stdout 표준 출력 스트림으로 출력하라고 했을 뿐입니다.
표준 출력을 working.log 같은 파일로 지정해서 로그 기록으로 쓰고, 표준 에러는 working.err 같은 에러 로그 파일로 지정하는 방법도 있습니다.
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> int main(int argc, const char *argv[]) { int out = open("cout.log", O_RDWR|O_CREAT|O_APPEND, 0600); if (-1 == out) { perror("opening cout.log"); return 255; } int err = open("cerr.log", O_RDWR|O_CREAT|O_APPEND, 0600); if (-1 == err) { perror("opening cerr.log"); return 255; } int save_out = dup(fileno(stdout)); int save_err = dup(fileno(stderr)); if (-1 == dup2(out, fileno(stdout))) { perror("cannot redirect stdout"); return 255; } if (-1 == dup2(err, fileno(stderr))) { perror("cannot redirect stderr"); return 255; } puts("doing an ls or something now"); fflush(stdout); close(out); fflush(stderr); close(err); dup2(save_out, fileno(stdout)); dup2(save_err, fileno(stderr)); close(save_out); close(save_err); puts("back to normal output"); return 0; }이러한 코드도 살펴볼 수 있습니다.