Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: samsaga2 en 30 de Agosto de 2005, 07:41:42 PM

Título: C, Linux Y Getenv
Publicado por: samsaga2 en 30 de Agosto de 2005, 07:41:42 PM
 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?
Título: C, Linux Y Getenv
Publicado por: TheWind en 30 de Agosto de 2005, 08:09:25 PM
 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.
Título: C, Linux Y Getenv
Publicado por: samsaga2 en 30 de Agosto de 2005, 08:26:34 PM
 Pues es verdad, pues entonces no se como se lo hace ncurses para averiguar el tamaño del terminal.
Título: C, Linux Y Getenv
Publicado por: Zaelsius en 30 de Agosto de 2005, 09:48:54 PM
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!
Título: C, Linux Y Getenv
Publicado por: samsaga2 en 31 de Agosto de 2005, 08:54:42 AM
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.
Título: C, Linux Y Getenv
Publicado por: Zaelsius en 31 de Agosto de 2005, 12:23:11 PM
 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
Título: C, Linux Y Getenv
Publicado por: samsaga2 en 31 de Agosto de 2005, 12:44:14 PM
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.