Ver la versión completa : SDL: stdout.txt y stderr.txt en la GP32
Estoy tratando de portar el Hexen SDL a la GP32. En principio, compila perfecto para Windows y GP32. Funciona en Windows pero resetea la GP32 :(
¿Hay alguna forma de que se graben los ficheros stdout.txt y stderr.txt en la GP32 para saber qué es lo que está pasando?
¿Poniendo fprintf(stderr,"Error: %s\n", SDL_GetError()); no consigues escribir el stderr?
Esa función funciona perfectamente en Windows, pero en la GP32 no aparece el stderr.txt por ningún lado :(
Propeller
05/10/2005, 04:10
Esa función funciona perfectamente en Windows, pero en la GP32 no aparece el stderr.txt por ningún lado :(
Curiosidad: Has hecho un gpfatinit() de esos?
Propeller
Curiosidad: Has hecho un gpfatinit() de esos?
Pues no, aunque no creo que haga falta con las librerías de chui, porque puedo acceder a los ficheros de la SMC sin problemas. De todas formas lo probaré.
El problema creo que está en el fichero stderr, que en Windows se crea y se cierra automáticamente pero en la GP32 no. De hecho, la función fprintf(stderr,"Error: %s\n", SDL_GetError()) funciona en la GP32 si creo un fichero distinto del stderr y añado el código para crearlo y cerrarlo, pero es un coñazo tener que modificar todos los fprintf del código. Por eso me interesa saber si hay alguna manera de hacer funcionar el stderr en la GP32.
El problema creo que está en el fichero stderr, que en Windows se crea y se cierra automáticamente pero en la GP32 no
A unas malas, quizas podrias crear y cerrar ese fichero "a mano"
A unas malas, quizas podrias crear y cerrar ese fichero "a mano"
Eso también lo he intentado y no hay tu tía, porque el stderror ya está declarado.
stderr es un puntero? aunque esté declarado, se podría hacer apuntar a otro lado? (a uno que abras tu)
stderr es un puntero? aunque esté declarado, se podría hacer apuntar a otro lado? (a uno que abras tu)
Buscando en los newsgroups he encontrado este ejemplo:
/* FREOPEN.C: This program reassigns stderr to the file
* named FREOPEN.OUT and writes a line to that file.
*/
#include <stdio.h>
#include <stdlib.h>
FILE *stream;
void main( void )
{
/* Reassign "stderr" to "freopen.out": */
stream = freopen( "freopen.out", "w", stderr );
if( stream == NULL )
fprintf( stdout, "error on freopen\n" );
else
{
fprintf( stream, "This will go to the file 'freopen.out'\n" );
fprintf( stdout, "successfully reassigned\n" );
fclose( stream );
}
system( "type freopen.out" );
}
A ver si tengo tiempo mañana y lo pruebo en la gp32
Ya te digo yo que ese 'system "type manolito"' no te rula ni pa dios.
Puedes rederigir el stdout o el stderr sin problemas, mira este ejemplo:
#include<stdio.h>
int main (int nargs,char **arg)
{
freopen("misalida.out","w",stdout);
printf("Hola mundo!\n");
fclose(stdout);
}
Haz freopen para stdout y stderr en la entrada del programa (main) y fclose en la salida y antes de todos los exit().
Ya te digo yo que ese 'system "type manolito"' no te rula ni pa dios.
J0der chui, el C no es lo mío pero hasta ahí llego [wei4]
Muchas gracias por el ejemplo. :musico:
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.