• Jueves 3 de Abril de 2025, 07:09

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - marcialre

Páginas: [1]
1
C/C++ / Ubicación y obtención de task_struct
« en: Domingo 25 de Octubre de 2009, 00:13 »
Linux almacena la información relativa al proceso en una estructura task_struct. La intuición me dice que la ubicación de dicha estructura se encuentra en el espacio de direcciones del núcleo para evitar errores y manipulaciones indebidas por parte del proceso. ¿La estructura task_struct de un proceso en que espacio de direcciones se encuentra, en el del proceso o en el de usuario?

Gracias.

2
ASM (Ensamblador) / Llamadas al systema den Linix x86_64
« en: Domingo 25 de Octubre de 2009, 00:01 »
He visto que hay dos métodos para realizar una llamada al sistema en Linux x86_64. Uno hace uso del tradicional int $0x80 y otro hace uso de la instrucción syscall. ¿Cuál es más adecuado?

También he visto que el orden de los parámetros es diferente si se utiliza el segundo método. ¿Cuál es el nuevo orden?

Gracias.

3
C/C++ / No me funciona la E/S asíncrona en las tuberías con nombre
« en: Sábado 24 de Octubre de 2009, 17:53 »
En el mismo directorio que el ejecutable hay una tubería con nombre llamada fifo (mkfifo fifo).
Código: C
  1.  
  2. int main()
  3. {
  4.    int file;
  5.    file = open("fifo", O_RDWR|O_ASYNC|O_NONBLOCK);
  6.    if(file == -1)
  7.    {
  8.       puts("Error al abrir el archio "fifo".");
  9.       exit(EXIT_FAILURE);
  10.    }
  11.    signal(SIGIO, faction);
  12.    pause();
  13.    close(file);
  14.    exit(EXIT_SUCCESS);
  15. }
  16.  
  17.  
Código: C
  1.  
  2. void faction()
  3. {
  4.    puts("SIGIO recibida.");
  5. }
  6.  
  7.  
En principio se debería lanzar la señal SIGIO cuando otro proceso lee o escribe del archivo fifo. ¿En qué me equivoco?

SO: Linux 2.6.28, gcc.

Gracias.

4
C/C++ / Comprobar de forma segura el acceso a memoria
« en: Sábado 24 de Octubre de 2009, 15:09 »
Necesito comprobar si la dirección de memoria apuntada por un puntero es accesible, es decir, una lectura o escritura no generará un Segmentation Fault.

Una forma de realizarlo es leyendo o escribiendo en la dirección y tratar la señal SIGSEGV cuando se produzca. El problema es que necesito una forma más segura que no requiera generar la excepción para averiguar si la dirección es accesible.

¿Hay alguna forma de hacerlo?

SO: Linux 2.6.28, gcc.

Gracias.

Páginas: [1]