SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: vgonzalez en Domingo 5 de Enero de 2014, 17:09

Título: Violación del segmento core
Publicado por: vgonzalez en Domingo 5 de Enero de 2014, 17:09
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.
Título: Re:Violación del segmento core
Publicado por: chenech en Lunes 6 de Enero de 2014, 13:04
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.