3
내가이 프로그램은 다음과 같은 매크로/함수를 사용 WIN7 에서 확인을 작동하는 프로그램을 실행하기위한 win8 소비자 미리보기 빌드 8250을 사용windows8 - _dup, _dup2
#if defined(_WIN32)
#include <io.h>
#define streamDup(fd1) _dup(fd1)
#define streamDup2(fd1,fd2) _dup2(fd1,fd2)
#endif
static int acquireOutputStream()
{ int fd = streamDup(fileno(stdout));
FILE* f = freopen("tmp","w",stdout);
return fd; }
static void releaseOutputStream(int fd)
{ fflush(stdout);
streamDup2(fd,fileno(stdout));
close(fd);
}
프로그램은 다음을 수행합니다
for (int i = 0; i < 1000;++i) {
int fd = acquireOutputStream();
printf("redirect %d\n",i);
releaseOutputStream(fd);
printf("test %d\n",i);
}
나는 그것을 실행할 때마다, 그것은 올바른 "재 J"장 복사의 tmp를 임의의 숫자를 파일로 인쇄합니다. 그 후 이 파일이 남아있는 실행을 위해 비어 (F 포인터가 acquireOutputStream에 NULL 결코) " 테스트 j "는 항상 인쇄됩니다. 바르게. 무엇이 문제 일 수 있습니까? 승리 8에서 알려진 문제입니까?
Windows 8은 공개적으로 제공됩니까? – trojanfoe
보 .it은 베타입니다. – Yakov
실제로 무엇을 기대하고 있는지 예상 할 수 있습니까? 귀하의 질문은 약간 혼란 스럽습니다. tmp 파일에서 "redirect 999"를 보시나요? 아니면 "redirect 0"입니까, 전혀 아님입니까, 아니면 다른 것입니까? –