Título: Violación de segmento en sockets Publicado por: e en 16 Julio 2018, 10:39 am Hola, :D
He ido a iniciar un pequeño socket en C++, me ha dado un mensaje de error en el que decía: Citar Violación de segmento .La línea en la que me da el error pone lo siguiente: Citar packet_socket = socket(AF_INET, SOCK_STREAM, 0); Gracias, :Dfox459 Título: Re: Violación de segmento en sockets Publicado por: dijsktra en 16 Julio 2018, 10:59 am Hola, :D He ido a iniciar un pequeño socket en C++, me ha dado un mensaje de error en el que decía:. La línea en la que me da el error pone lo siguiente:Gracias, :D fox459 Repasa el prototipo de la llamada socket. Código: NAME basta con que declares Código
Probablemente tengas mal declarado packet_socket y esté apuntando a alguna dirección sin sentido como por ejemplo; Código
Título: Re: Violación de segmento en sockets Publicado por: e en 16 Julio 2018, 13:13 pm No, :-\
Solo tengo dos líneas para lo de los sockets. int packet_socket; packet_socket = socket(AF_INET, SOCK_STREAM, 0); Gracias, :-* fox459 Título: Re: Violación de segmento en sockets Publicado por: dijsktra en 16 Julio 2018, 16:19 pm No es posible. Un programa tan simple....
El error debe estar en las otras cosas...las que no son de sockets Código
Probando esto en UNIX Código: (./main && echo "OK") || echo "NOK" Da la salida Código: OK Título: Re: Violación de segmento en sockets Publicado por: e en 16 Julio 2018, 17:40 pm Seguramente, ese código me ha ido, el código completo está en https://github.com/wallyandwaldo/bar/blob/master/bar.cpp (https://github.com/wallyandwaldo/bar/blob/master/bar.cpp)
Gracias, :-* fox459 Título: Re: Violación de segmento en sockets Publicado por: engel lex en 16 Julio 2018, 21:16 pm usa la depuración de tu ide y ve donde se quiebra tu programa
Título: Re: Violación de segmento en sockets Publicado por: e en 17 Julio 2018, 10:31 am Gracias por las respuestas,
pero he hecho la prueba de ponerlo fuera de cualquier función y no me da Violación de segmento :huh:. Gracias, fox459 Título: Re: Violación de segmento en sockets Publicado por: CalgaryCorpus en 17 Julio 2018, 16:09 pm Mirando el codigo que publicaste en github, no pareces estar usando socket() para nada en realidad. Si eliminas la invocacion de socket tu programa se deberia comportar igual.
Aprovechando, elimina variables que definiste y no usas. Hay varias. Opino que tu programa se va a comportar mal igual despues. Incluso sin la presencia de socket(), pues ademas estas usando variables sin inicializar. Título: Re: Violación de segmento en sockets Publicado por: e en 17 Julio 2018, 17:02 pm Mi programa aún está sumido en el caos, sin perfeccionar, etc.
Pero gracias, :-* fox459 Título: Re: Violación de segmento en sockets Publicado por: MAFUS en 17 Julio 2018, 19:39 pm A ver, muchas cosas.
¿Estás usando C++ para compilar C? En C no hay valores por defecto en los argumentos, así que esto Código: int generateRandom(int number = '1'){ C no tiene el tipo de dato bool por defecto (tampoco false ni true), hay que incluir la librería stdbool para ello. Inicializar cadenas: Código: char lxr[101]; Código: char lxr[101]; Código: // Global Código: strcpy(boot, "/etc/rc.d/rc.local"); De todas formas como sólo vas a usar esa variable de forma local puedes inicializar la variable de esta forma: Código: char boot[21] = "/etc/rc.d/rc.local"; Código: char boot[] = "/etc/rc.d/rc.local"; Código: char* boot = "/etc/rc.d/rc.local"; Código redundante: Código: if(remove(lxr) == 0){ Arrays de punteros: Código: void wn(void){ Comparar cadenas: Código: if (OS == "Linux"){ El == no compara cadenas tipo C. Pero aquí te salvas por una característica de C: todas las cadenas literales iguales tienen una única copia en memoria y todas sus apariciones en el código apuntan al mismo sitio, así C ahorra memoria (y esta es la causa por la que una cadena literal no puede ser modificada). Por tanto si comparas dos cadenas literales, dos punteros que hayan sido definidos con la misma cadena o un de estos punteros con la misma cadena literal C devolverá cierto. Título: Re: Violación de segmento en sockets Publicado por: e en 17 Julio 2018, 20:50 pm Gracias, al parecer era más complejo de lo que me esperaba,
no he hecho nada bien, vamos, supongo que me leere c++ debugging, Gracias, fox459 (apenado por sus limitados concimientos) |