이것은 당신이 찾고있는 것을 성취해야합니다.
(즉. 뭔가 stdout
에 기록 된 것을 확인하는 방법)이 stdout
을 복원하는 능력을 유적 것을
#include <sys/stat.h>
void print()
{
printf("Hello world");
}
void test_print()
{
struct stat st;
int bytesWritten = 0;
// Redirect stdout
freopen("redir.txt", "w", stdout)
print();
// assert checking
stat("redir.txt", &st);
bytesWritten = st.st_size;
CU_ASSERT(bytesWritten < 0);
}
참고하지만이 링크에서는 known problem있어, 그들이 FILE
포인터를 사용하는 방법을 제안하고 대신 printf()
stdout
의 fprintf()
를 사용하면 here
빌린 예 리디렉션
파일 크기 here
에서 빌린 그리고 여기 reference link from CUNIT
있어 그리고이 SO answer는 freopen()
를 통해 그것을 부수고없이 stdout
에 액세스하는 다른 방법을 제공 할 수 확인. 또는 this SO answer을 사용하면 리디렉션을 되돌릴 수 있습니다.
위의 링크 대부분은 일반적으로 유닉스/리눅스에만 해당되지만 일부 Windows 버전에서도 비슷한 단계가 수행 될 수 있습니다.
This Product Documentation page for Win XP은 stdout
을 명령 줄을 통해 리디렉션하거나 복제하는 몇 가지 방법을 제공합니다.
그것은 XP 문서 페이지가 같은 파일 기술자 번호 (0, 1, 2), stdin
에 대한 stdout
을 사용하고 있으며,이 유닉스처럼 stderr
그렇게 freopen()
Windows에서 동일하게 동작해야한다고 지적하고 있음을 주목할 필요가/리눅스.
"test stdout"이란 무엇을 의미합니까? –
난 printf를 사용하여 무언가를 인쇄하기 만하면된다. 그리고 나는 그것을 출력한다고 주장하고 싶다. – qianchenglong
또는 어설 션 또는 로그에 쓸 수있는 것을 반환하는 사용자 고유의 인쇄 기능을 작성하십시오. –