diff --git a/src/conio/ansi_cio.c b/src/conio/ansi_cio.c
index 14bcf21f0b3c062ecce0e73caac8bea383663190..f6b501d9bb0f4bd6001bee41544bb0b95972f9e8 100644
--- a/src/conio/ansi_cio.c
+++ b/src/conio/ansi_cio.c
@@ -31,6 +31,8 @@ int		ansi_row=0;
 int		ansi_col=0;
 int		force_move=1;
 
+int		outfd;
+
 /* Control sequence table definitions. */
 typedef struct
 {
@@ -137,7 +139,7 @@ void ansi_sendch(char ch)
 				ansi_row=ansi_rows-1;
 			}
 		}
-		fwrite(&ch,1,1,stdout);
+		write(outfd,&ch,1);
 		if(ch<' ')
 			force_move=1;
 	}
@@ -148,7 +150,7 @@ void ansi_sendstr(char *str,int len)
 	if(len==-1)
 		len=strlen(str);
 	if(len) {
-		fwrite(str,len,1,stdout);
+		write(outfd,str,len);
 	}
 }
 
@@ -639,6 +641,8 @@ int ansi_initciolib(long inmode)
 		atexit(ansi_fixterm);
 	}
 #endif
+	outfd=dup(fileno(stdout));
+	fclose(stdout);
 	vmem=(WORD *)malloc(ansi_rows*ansi_cols*sizeof(WORD));
 	ansi_sendstr(init,-1);
 	for(i=0;i<ansi_rows*ansi_cols;i++)