elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Utilizar recursos graficos con PTY Linux C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Utilizar recursos graficos con PTY Linux C  (Leído 1,824 veces)
mester

Desconectado Desconectado

Mensajes: 219


https://www.youtube.com/watch?v=IlY9C6pzxKc


Ver Perfil WWW
Utilizar recursos graficos con PTY Linux C
« en: 27 Abril 2017, 14:21 pm »

Hola.

Estaba trasteando con los pty's y al hacer unos cuantos me he dado cuenta de que no puedo utilizar correctamente NCURSES o moverme por el input del terminal como desearía.
Buscando imitar a SSH he mirado su codigo para ver como lo hace, pero al imitarlo me sale prácticamente lo mismo. Ejemplo del codigo:

Código
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/wait.h>
  4. #include <fcntl.h>
  5. #include <pty.h>
  6. #include <utmp.h>
  7. #include <sys/select.h>
  8.  
  9. int
  10. main(void)
  11. {
  12.  int fdm, fds;
  13.  
  14.  openpty(&fdm, &fds, NULL, NULL, NULL);
  15.  
  16.  if ( fork() == 0 )
  17.    {
  18.      close(fdm);
  19.  
  20.      login_tty(fds);
  21.  
  22.      dup2(fds, 0);
  23.      dup2(fds, 1);
  24.      dup2(fds, 2);
  25.  
  26.      close(fds);
  27.  
  28.      char *arg[] = {NULL};
  29.  
  30.      execvp("/bin/bash", arg);
  31.    }
  32.  else
  33.    {
  34.      fd_set fd;
  35.  
  36.      while ( 1 )
  37.        {
  38.          char put;
  39.  
  40.          FD_ZERO(&fd);
  41.  
  42.          FD_SET(0, &fd);
  43.          FD_SET(fdm, &fd);
  44.  
  45.          select(fdm+1, &fd, NULL, NULL, NULL);
  46.  
  47.          if ( FD_ISSET(0, &fd) )
  48.            {
  49.              read(0, &put, 1);
  50.              write(fdm, &put, 1);
  51.            }
  52.          if ( FD_ISSET(fdm, &fd) )
  53.            {
  54.              read(fdm, &put, 1);
  55.              write(1, &put, 1);
  56.            }
  57.        }
  58.  
  59.      close(fdm);
  60.    }
  61.  
  62.  return 0;
  63. }

Gracias, de antemano.


En línea

Justicia es dar a cada uno lo que se merece
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Utilizar recursos graficos con PTY Linux C
« Respuesta #1 en: 27 Abril 2017, 15:41 pm »

El penúltimo argumento de openpty es const struct termios *termp. Con ella controlas el comportamiento del terminal. A lo mejor tu solución está por aquí.


En línea

mester

Desconectado Desconectado

Mensajes: 219


https://www.youtube.com/watch?v=IlY9C6pzxKc


Ver Perfil WWW
Re: Utilizar recursos graficos con PTY Linux C
« Respuesta #2 en: 27 Abril 2017, 15:53 pm »

El penúltimo argumento de openpty es const struct termios *termp. Con ella controlas el comportamiento del terminal. A lo mejor tu solución está por aquí.

Casi, ya he encontrado el error. Tenía que haberme fijado un poco más.
No hay que usar la estrutura termios para controlarlo. Depende totalmente del usuario, por así decirlo.
Demostración: https://github.com/Mester19/glibc/blob/master/login/openpty.c
Cuando accedes a la funcion, sólo se establece la estructura termios para el esclavo. La idea es que el STDIN reciba y envíe los datos en RAW. Se arregla poniendo el siguiente codigo en la parte del proceso padre:
Código
  1. tcgetattr(STDIN_FILENO, &term);
  2. cfmakeraw(&term);
  3. tcsetattr(STDIN_FILENO, &term);
  4.  
En línea

Justicia es dar a cada uno lo que se merece
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Graficos conmutables en GNU/Linux.
GNU/Linux
mordiskos 1 2,885 Último mensaje 7 Diciembre 2011, 21:18 pm
por mordiskos
Coger recursos gráficos de otra web es moral?
Dudas Generales
anonimo12121 8 4,032 Último mensaje 22 Noviembre 2012, 01:14 am
por anonimo12121
Crear Monitor de recursos linux
Scripting
kiraastaroth 2 2,609 Último mensaje 5 Diciembre 2012, 20:18 pm
por -Myx-
Acelerador gráficos para Linux
GNU/Linux
Kaac_11 1 2,202 Último mensaje 26 Julio 2014, 23:42 pm
por robebugaty
que linux me recomiendan ? (recursos pobres :( )
GNU/Linux
Zeta1337 4 2,766 Último mensaje 29 Noviembre 2014, 07:01 am
por Br1ant
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines