Syntax
#include <stdio.h> int _set_crt_msg_handle(int fh);Description
Use _set_crt_msg_handle to trap run-time message output in applications where handle 2 is not defined, such as Presentation Manager applications.
The file handle fh must be a writable file or pipe handle. Set fh only for the current library environment.
This example causes an exception by dereferencing a null pointer and uses _set_crt_msg_handle to send the exception messages to the file _scmhdl.out.
#include <sys\stat.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int fh;
char *p = NULL;
if (-1 == (fh = open("_scmhdl.out", O_CREAT|O_TRUNC|O_RDWR,
S_IREAD|S_IWRITE))) {
perror("Unable to open the file _scmhdl.out.");
exit(EXIT_FAILURE);
}
/* change file handle where messages are sent */
if (fh != _set_crt_msg_handle(fh)) {
perror("Could not change massage output handle.");
exit(EXIT_FAILURE);
}
*p = 'x'; /* cause an exception, output should be in _scmhdl.out */
if (-1 == close(fh)) {
perror("Unable to close _scmhdl.out.");
exit(EXIT_FAILURE);
}
return 0;
/****************************************************************************
Running this program would cause an exception to occur,
the file _scmhdl.out should contain the exception messages similar to :
Exception = c0000005 occurred at EIP = 10068.
****************************************************************************/
}
Related Information