Programación > [C] Violacion de segmento en Linux al ejecutarParticipa en el tema [C] Violacion de segmento en Linux al ejecutar en el foro Programación |  | | | Totalmente fumado
Registración: Jul 2005 Ubicación: #doom (Florida)
Mensajes: 23,087
| [C] Violacion de segmento en Linux al ejecutar Bueno, el tema es asi, mediante un makefile creo un ejecutable llamado Servidor, tiene un archivo de configuracion, config.txt en el que fiugra puerto e ip. El tema es que cuando cambio la ip, al ejecutar ./Servidor, tira "Violacion de segmento".
Alguna idea de por que puede ser que al editar el config.txt tire ese error?
Saludos y gracias |
| | | Will & Spirit
Registración: Feb 2003 Ubicación: No Man's Land
Mensajes: 4,904
| Re: [C] Violacion de segmento en Linux al ejecutar No se puede deducir mucho solamente con eso, pero podría ser que te falte reservar memoria para realizar alguna de las tareas de manipulación de strings.
__________________ Citar: |
Mensaje original enviado por Gold_Member Me da verguenza haber nacido aca, decir que todavia me salva la sangre. | Citar:
Mensaje original enviado por Stradi ¿Sos productor de morcilla? | |
| | | Luche y Vuelve
Registración: Jan 2003
Mensajes: 20,584
| Re: [C] Violacion de segmento en Linux al ejecutar Yo se que tus ejercicios de la facultad poseen codigo muy original que te va a llevar a ser millonario, pero es casi imposible que alguien te responda este tipo de problemas sin ver codigo.
Lo unicoq que se me ocurre a mi es que en una prueba escribas un ip mas corto y cuando pincha uno mas largo y como dice Demo estes reservando mal la memoria, pero en realidad pueden ser mil cosas
__________________ BT | Tte. Gral. Peron
BT - Primer y unico Tricampeon de BF1942 Argentina
Qué linda es la borrachera
porque de todo me olvido,
y hasta pienso en el patrón
y me parece un amigo. |
| | | Advocatus Diaboli
Registración: Feb 1984 Ubicación: Mi laboratorio secreto
Mensajes: 19,203
| Re: [C] Violacion de segmento en Linux al ejecutar Pone el código... total te vas a morir de SIDA antes de poder ver un mango... |
| | | Dr. Gregory House - ex seek -
Registración: Mar 2004
Mensajes: 7,338
| Re: [C] Violacion de segmento en Linux al ejecutar Pero yo no me voy a morir y estoy en el mismo grupo de él 
Y si, se pincha cuando ponés una ip más larga. Código: #include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define CARACTERES_POR_LECTURA 1
#define LONG_MAX_LINEA 30
int Obtiene_Datos(char* ip)
{
int bytes; int archivo;
char* msj; int puerto; char str[LONG_MAX_LINEA];
int i=0; int flag=1;
char buffer[CARACTERES_POR_LECTURA];
/* El flag pasa a valer 0 si:
al leer desde el archivo se obtiene una \ (indica fin de linea)
si bytes, luego de read, vale 0 (o sea cuando es el EOF)
*/
archivo=open("config.txt",O_RDONLY);
bytes = read (archivo, buffer, sizeof(buffer));
while(bytes!=0)
{
while(flag && i<30)
{
str[i++]=buffer[0];
bytes = read (archivo, buffer, sizeof(buffer));
if(buffer[0]=='\\' || bytes==0)
flag=0;
}
str[i]='\\';
str[i+1]='\0';
msj=strtok(str,":");
if(strcmp(msj,"Ip servidor")==0)
strcpy(ip,strtok(NULL,"\\"));
else
puerto=atoi(strtok(NULL,"\\"));
i=0;
flag=1;
bytes = read (archivo, buffer, sizeof(buffer));
}
close(archivo);
return puerto;
}
__________________ Citar:
Mensaje original enviado por Luisiño73 loco tengo los pantalones abajo y la mano izquierda en la verga, no me pienso poner a buscar en 214012049 paginas, exijo fotos en el post siguiente, CARAJO! | Citar:
Mensaje original enviado por TRQARG! Es plata en ladrillos que no se pierde a menos que algun peronista instale una villa cerca. | |
| | | Gracias IOmega666 :3
Registración: Apr 2003 Ubicación: Rosario
Mensajes: 4,841
| Re: [C] Violacion de segmento en Linux al ejecutar ahhh vos sos el que definiste una variable con el mismo nombre de una función!!!!!!11111
__________________ nosotros somos inmortales, somos gamers, tenemos muchas vidas, un gamer no muere, respawnea
Comunidad Gamer Argentina: facebook.com/group.php?gid=38506797092 |
| | | [z] Pasto
Registración: Jul 2001 Ubicación: UBA - FCEN
Mensajes: 4,602
| Re: [C] Violacion de segmento en Linux al ejecutar Citar:
Mensaje original enviado por seek Pero yo no me voy a morir y estoy en el mismo grupo de él 
Y si, se pincha cuando ponés una ip más larga. Código: #include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define CARACTERES_POR_LECTURA 1
#define LONG_MAX_LINEA 30
int Obtiene_Datos(char* ip)
{
int bytes; int archivo;
char* msj; int puerto; char str[LONG_MAX_LINEA];
int i=0; int flag=1;
char buffer[CARACTERES_POR_LECTURA];
/* El flag pasa a valer 0 si:
al leer desde el archivo se obtiene una \ (indica fin de linea)
si bytes, luego de read, vale 0 (o sea cuando es el EOF)
*/
archivo=open("config.txt",O_RDONLY);
bytes = read (archivo, buffer, sizeof(buffer));
while(bytes!=0)
{
while(flag && i<30)
{
str[i++]=buffer[0];
bytes = read (archivo, buffer, sizeof(buffer));
if(buffer[0]=='\\' || bytes==0)
flag=0;
}
str[i]='\\';
str[i+1]='\0';
msj=strtok(str,":");
if(strcmp(msj,"Ip servidor")==0)
strcpy(ip,strtok(NULL,"\\"));
else
puerto=atoi(strtok(NULL,"\\"));
i=0;
flag=1;
bytes = read (archivo, buffer, sizeof(buffer));
}
close(archivo);
return puerto;
} | ctrl+shift+f por favor
btw, no encuentro la declaracion de 'ip'.
No entiendo porque la gente sigue exparciendo el cancer de declarar las variables todas juntas antes de usarlas.
__________________ Citar:
Mensaje original enviado por El Oso Polar No voy a aceptar una politica si no vamos a terminar con iPods. | |
| | | Serenity now
Registración: May 2003 Ubicación: el terreno del Atlántico a Los Andes, del verde Chaco a los hielos fueguinos.
Mensajes: 2,222
| Re: [C] Violacion de segmento en Linux al ejecutar ip es parametro
lo de las variables todas juntas es excusable, cuando curse esa materia nos pedian que compilemos con -ansi 
__________________ La Meta es Alt. Código: intellisense
||
\/
code >> compile >>>>> run >>>>> success ;-)
/\ || ||
^^ \/ \/
^^ errors errors
^^ \\ //
^^ google
^^ ||
\\ \/
\<<<< copy N paste |
| | | Luche y Vuelve
Registración: Jan 2003
Mensajes: 20,584
| Re: [C] Violacion de segmento en Linux al ejecutar Citar:
Mensaje original enviado por Willar No entiendo porque la gente sigue exparciendo el cancer de declarar las variables todas juntas antes de usarlas. | Porque esa exigencia sigue sindo parte de la norma ISO que definio al C en el 90 (o por lo menos en esa decada).
Solo podes declarar al comienzo de un bloque.
Seek, de donde sale ese 30?
Xuan, cual es el problema de que te pidieran codigo ansi c?
__________________ BT | Tte. Gral. Peron
BT - Primer y unico Tricampeon de BF1942 Argentina
Qué linda es la borrachera
porque de todo me olvido,
y hasta pienso en el patrón
y me parece un amigo. |
| | | Laucha
Registración: Oct 2002 Ubicación: Floresta
Mensajes: 665
| Re: [C] Violacion de segmento en Linux al ejecutar Citar:
Mensaje original enviado por seek Pero yo no me voy a morir y estoy en el mismo grupo de él 
Y si, se pincha cuando ponés una ip más larga. Código: #include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define CARACTERES_POR_LECTURA 1
#define LONG_MAX_LINEA 30
int Obtiene_Datos(char* ip)
{
int bytes; int archivo;
char* msj; int puerto; char str[LONG_MAX_LINEA];
int i=0; int flag=1;
char buffer[CARACTERES_POR_LECTURA];
/* El flag pasa a valer 0 si:
al leer desde el archivo se obtiene una \ (indica fin de linea)
si bytes, luego de read, vale 0 (o sea cuando es el EOF)
*/
archivo=open("config.txt",O_RDONLY);
bytes = read (archivo, buffer, sizeof(buffer));
while(bytes!=0)
{
while(flag && i<30)
{
str[i++]=buffer[0];
bytes = read (archivo, buffer, sizeof(buffer));
if(buffer[0]=='\\' || bytes==0)
flag=0;
}
str[i]='\\';
str[i+1]='\0';
msj=strtok(str,":");
if(strcmp(msj,"Ip servidor")==0)
strcpy(ip,strtok(NULL,"\\"));
else
puerto=atoi(strtok(NULL,"\\"));
i=0;
flag=1;
bytes = read (archivo, buffer, sizeof(buffer));
}
close(archivo);
return puerto;
} | podrias postear cual es el formato del archivo de configuracion? |
| | | Herramientas | | | | Modo de visualización | Modo Lineal |
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
Copyright 1999-2009 3DGames Argentina - Todos los derechos reservados.
|