windows 환경에서 _write 함수로 console에 출력하기

dragona79의 이미지

_write 함수를 이용해서 console에 출력을 하려고 했더니 자꾸 실패하네요

지식이 짧아 원인을 못찾겠습니다. 도와주세요 ㅠㅠ

프로젝트 환경은 console 프로젝트가 아니라 mfc dialog입니다.

//console을 열고 stdout을 연결합니다.

AllocConsole();

FILE *stream=NULL;
freopen_s(&stream, "CONOUT$", "w", stdout);

int nRes=_write(1, "aaa", 3);

뭐 길지 않은데 찍히질 않네요.

리턴값은

nRes는 -1

errno 는 9, EBADF, Bad file number

GetLastError, ERROR_INVALID_HANDLE

요렇게 나오네요.

msdn에 보면 _write에 첫번째 인자에 1이 stdout, 2가 stderr 이렇게 되있는데 왜 안되는걸까요?

shint의 이미지

http://blog.naver.com/ph614/60017131553

int fileHandle = 0;
unsigned bytesWritten = 0;
char buffer[] = "This is a test of '_write' function\n";

_sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE); //파일로 쓰기
_sopen_s(&fileHandle, "CONOUT$", _O_WRONLY, _SH_DENYNO, _S_IWRITE); //버퍼에 쓰기
_write( fileHandle, buffer, sizeof( buffer ));
_close( fileHandle );

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com