Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





C, Linux Y Getenv

Iniciado por samsaga2, 30 de Agosto de 2005, 07:41:42 PM

« anterior - próximo »

samsaga2

 No tengo ni la mas remota idea de que estoy haciendo mal:

Citar
samsaga2@ubuntu:~/tmp $ cat kk.c
main() {
        printf("%s\n", getenv("COLUMNS"));
}

samsaga2@ubuntu:~/tmp $ gcc kk.c
samsaga2@ubuntu:~/tmp $ ./a.out
(null)
samsaga2@ubuntu:~/tmp $ echo $COLUMNS
80

Alguna pista?

TheWind

 Si, eso es que columns no es una variable de entorno exportada, por lo tanto, cuando arrancas el programa, no se encuentra en el entorno y sale null.

samsaga2

 Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.

Zaelsius

Cita de: "samsaga2"Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Luke, use the Source!

samsaga2

Cita de: "ZaelSiuS"
Cita de: "samsaga2"Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Luke, use the Source!
Eso hice, de donde crees que saque el getenv("COLUMNS"), lo que pasa es que el resto del codigo de la funcion no lo tengo muy claro.

Zaelsius

 Tu código tampoco me funciona en OS X. He estado buscando un rato por google, y lo que buscas lo puedes sacar del código fuente del comando resize: http://www.ohse.de/uwe/software/resize.c.html( función get_term_size )

He compilado y ejecutado este programita cogiendo código de ahí, y me devuelve el ancho y alto correctos de mi terminal:

Citar#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include


main() {
int x=0;
int y=0;
struct ttysize win;
if (ioctl (STDIN_FILENO, TIOCGSIZE, &win))
        return 0;
   
        y=win.ts_lines;
   
        x=win.ts_cols;

printf( "x = %d, y = %d", x, y );


}

Sobran la mitad de #includes pero no me apetecía ir probando :P

samsaga2

Cita de: "ZaelSiuS"Tu código tampoco me funciona en OS X. He estado buscando un rato por google, y lo que buscas lo puedes sacar del código fuente del comando resize: http://www.ohse.de/uwe/software/resize.c.html( función get_term_size )

He compilado y ejecutado este programita cogiendo código de ahí, y me devuelve el ancho y alto correctos de mi terminal:

Citar#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#include


main() {
int x=0;
int y=0;
struct ttysize win;
if (ioctl (STDIN_FILENO, TIOCGSIZE, &win))
        return 0;
   
        y=win.ts_lines;
   
        x=win.ts_cols;

printf( "x = %d, y = %d", x, y );


}

Sobran la mitad de #includes pero no me apetecía ir probando :P
Me da errores de compilacion, pero por ahi debe andar la cosa.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.