I win8 Consumer Preview Build 8250 verwenden zur Ausführung eines Programms, das auf win7 Das Programm verwendet die folgenden Makros/Funktionen OK funktioniert: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);
}
Das Programm führt die folgenden Schritte aus:
for (int i = 0; i < 1000;++i) {
int fd = acquireOutputStream();
printf("redirect %d\n",i);
releaseOutputStream(fd);
printf("test %d\n",i);
}
Jedes Mal, wenn ich es laufen, gibt es tmp Zufallszahl der korrekten „redirect j“ Aufdrucke in Datei:. Nachdem die Datei ist leer für die restlichen Ausführungen (f Zeiger ist nie NULL in der acquireOutputStream)“ Test j "wird immer gedruckt korrekt. Was könnte ein Problem sein? Ist es ein bekanntes Problem bei Sieg 8?
Ist Windows 8 öffentlich verfügbar? – trojanfoe
bo .it ist Beta. – Yakov
Können Sie klarstellen, was Sie erwarten und was Sie eigentlich bekommen? Ihre Frage ist ein wenig verwirrend. Sehen Sie "redirect 999" in der tmp-Datei oder "redirect 0", gar nichts oder etwas anderes? –