freopen을 stdout으로 하면 printf등이 파일로 리디렉트가 되잖아요? 그런데 그 리디렉트를 다시 원래대로 콘솔로 연결시킬 수 있나요? fopen 했다가 fclose 하는것처럼...
참고해보세요.
dup(stdout)http://search.naver.com/search.naver?ie=utf8&sm=stp_hty&where=se&query=dup%28stdout%29
#include <iostream> /* freopen example: redirecting stdout */ #include <sys\stat.h> #include <io.h> #include <stdio.h> // puts() #include <stdlib.h> #include <string.h> // strlen(), memset() #include <fcntl.h> // O_RDWR, O_CREAT #include <unistd.h> // write(), close(), dup() #define BUFF_SIZE 1024 //#define stdin (&__iob_func()[0]) //#define stdout (&__iob_func()[1]) //#define stderr (&__iob_func()[2]) int main(int argc, char** argv) { FILE* fp = NULL; int n = (int)stdout; FILE* v = stdout; n = fileno(stdout); int x = _get_output_format(); printf("%x\n", fileno(stdout)); printf("%x\n", (stdout)); n = (int)stdout; unlink("somefile.txt"); unlink("myfile.txt"); int fd; int save_fd; fd = open("somefile.txt", O_CREAT | O_RDWR, S_IREAD | S_IWRITE); //기존 출력 save_fd = dup(STDOUT_FILENO); printf("-----1111111\n"); puts("puts -----1111111\n"); dup2((int)fd, STDOUT_FILENO); printf("-------0000\n"); puts("puts -------0000\n"); close((int)fd); printf("111111\n"); puts("puts 111111\n"); #if 1 fp = freopen ("myfile.txt","w", (FILE*)stdout); printf ("This sentence is redirected to a file.\n"); printf ("fd %x\n", fd); printf ("save_fd %x\n", save_fd); printf ("stdout %x\n", stdout); printf ("n %x\n", n); fclose ((FILE*)stdout); #endif // fflush((FILE*)save_fd); 멈춘다. printf("22222222\n"); puts("puts 22222222\n"); dup2(save_fd, STDOUT_FILENO); printf("3333333\n"); puts("puts 3333333\n"); close(save_fd); printf("4444444\n"); puts("puts 4444444\n"); // *(int*)stdout = *(int*)n; // *(int*)stdout = *(int*)&n; // *(int*)0x77c0aca0 = *(int*)n; // *(int*)stdout = *(int*)v; printf ("file %x\n", n); printf ("This sentence is redirected to a file."); return 0; }
자동으로 확인하고 싶으면. 이 코드를 추가. system("somefile.txt"); system("myfile.txt");
---------------------------------------------------------------------------- 젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다. 정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
성공했네요. ㅇ_ㅇ;;
참고해보세요.
dup(stdout)
http://search.naver.com/search.naver?ie=utf8&sm=stp_hty&where=se&query=dup%28stdout%29
자동으로 확인하고 싶으면. 이 코드를 추가.
system("somefile.txt");
system("myfile.txt");
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기