• Martes 16 de Abril de 2024, 23:33

Autor Tema:  Violación del segmento core  (Leído 4988 veces)

vgonzalez

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Violación del segmento core
« en: Domingo 5 de Enero de 2014, 17:09 »
0
Hola,
Estoy intentando ejecutar un script y me da error por violación del segmento (core generado)
Por lo que he podido leer puede ser porque el código este mal... debo admitir que estoy empezando asi que no se que hacer.. os pongo el código por si se ve algún error:

#define _GNU_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>

const int nc= 10;

int escribe(void* pc)
{
    int i, j;
    char c;
    i= *(int*)pc;
    for (j = 0; j < nc; j++) {
        c = 'A' + i - 1;
        write(1, &c, 1);
        sleep(i);
    }
    return(0);
}

int main(int argc, char *argv[])
{
    int i;
    int np= atoi(argv[1]);
    for (i = 1; i <= np; i++)
        clone(escribe, malloc(100000)+100000, CLONE_VM | CLONE_FILES, &i);
    exit(0);
}


Un saludo.

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Violación del segmento core
« Respuesta #1 en: Lunes 6 de Enero de 2014, 13:04 »
0
Hola vgonzalez, me imagino que estas intentando compilar para Linux, no dispongo de compilador para ello ni Linux, pero por lo que veo por encima en el código, creo que deberías asignar en la llamada a la función clone un puntero al malloc:

(void*) malloc ... y lo que sigue

Prueba así a ver, un saludo.