falha de segmentação

1. falha de segmentação

sidney
sidneybpjr

(usa Outra)

Enviado em 19/09/2014 - 23:27h

compilei e executei o seguinte código, e sempre ta dando falha de segmentaçao(copia da imagem gravada)...e ja fiz aquele metodo do gdb run , msm assim nao consegui solucionar...obg.


#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
main(char *argv[]){
int nprocessos,i,j,aux=0,V[500],x,somatotal=0;
nprocessos=atoi(argv[1]);
int nelementos=500/nprocessos;
for(i=0;i<500;i++)
V[i]=1;
for(i=0;i<nprocessos;i++){
int soma=0;
x=fork();
if(x==0){
for(j=aux;j<aux+nelementos;j++)
soma+=V[j];
exit(soma);
}
aux+=nelementos;
wait(&soma);
somatotal=WEXITSTATUS(soma)+somatotal;
}
printf("a soma dos elementos do vetor vale: %d",somatotal);
}




  


2. Re: falha de segmentação

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/09/2014 - 23:56h

sidneybpjr escreveu:

compilei e executei o seguinte código, e sempre ta dando falha de segmentaçao(copia da imagem gravada)...e ja fiz aquele metodo do gdb run , msm assim nao consegui solucionar...obg.


#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
main(char *argv[]){
int nprocessos,i,j,aux=0,V[500],x,somatotal=0;
nprocessos=atoi(argv[1]);
int nelementos=500/nprocessos;
for(i=0;i<500;i++)
V[i]=1;
for(i=0;i<nprocessos;i++){
int soma=0;
x=fork();
if(x==0){
for(j=aux;j<aux+nelementos;j++)
soma+=V[j];
exit(soma);
}
aux+=nelementos;
wait(&soma);
somatotal=WEXITSTATUS(soma)+somatotal;
}
printf("a soma dos elementos do vetor vale: %d",somatotal);
}




Cara , nprocessos=atoi(argv[1]); argv[1] é o que vem depois do ./teste aki


#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc,char *argv[]){

int nprocessos;
int i,j,x;
int aux=0,V[500];
int somatotal=0;

nprocessos=atoi(argv[1]);

int nelementos=500/nprocessos;
for(i=0;i<500;i++)V[i]=1;

for(i=0;i<nprocessos;i++){
int soma=0;
x=fork();
if(x==0){
for(j=aux;j<aux+nelementos;j++)
soma+=V[j];
exit(soma);
}
aux+=nelementos;
wait(&soma);
somatotal=WEXITSTATUS(soma)+somatotal;
}
printf("A soma dos elementos do vetor vale: %d\n",somatotal);

return 0;

}


Salve como teste.c

Compile com gcc -o teste teste.c

e execute :

./teste (aki coloque um numero aki)

T+


3. Re: falha de segmentação

sidney
sidneybpjr

(usa Outra)

Enviado em 20/09/2014 - 00:07h

qual a modificação que você fez no código? abraço.


4. Re: falha de segmentação

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 20/09/2014 - 00:14h

sidneybpjr escreveu:

qual a modificação que você fez no código? abraço.


Apenas :
Troquei de :main(char *argv[]) // Errado
Por :int main(int argc,char *argv[]) // Certo
Tambem é correto assim :
int main(int argc,char **argv)

E adicionei o return 0; no fim do arquivo , nada de +

T+


5. Re: falha de segmentação

sidney
sidneybpjr

(usa Outra)

Enviado em 20/09/2014 - 00:16h

vlw :)


6. Re: falha de segmentação

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 20/09/2014 - 00:41h

Agora marque o topico como resolvido e escolha a melhor resposta

Espero ter ajudado em algo

T+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts