C Errore di segmentazione(core dump creato)

di il
2 risposte

C Errore di segmentazione(core dump creato)

Creazione di una shell in linux [con un massimale di 5 parole da tastiera (6 considerando il comando stesso)]
all'esecuzione del programma, dopo aver inserito i comandi mi restituisce solo "Errore di segmentazione(core dump creato)"
Potreste aiutarmi a trovare il problema?

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

int main()
{
	int p,status,i=0, contatore=0,a;
	char x[100];
	while(1){	
		printf("%%");
		scanf("%s",x);
		while(x[i] != '\n') {
			if(x[i]== ' '){ 
				contatore++;
			}			
			i++;
		}
		if(contatore > 5){
			printf("TROPPI PARAMETRI IN INPUT");	
			return 0;	
		}
		else{
			p=fork();
			if(p<0){ printf("\n Errore fork \n");
				}
			if(p==0){//controllo figlio	
				execlp(x,x,NULL);
			}
			else{
				waitpid(p,&status,0);
			}
		}
	}	

}

2 Risposte

  • Re: C Errore di segmentazione(core dump creato)

    Adottare la vecchia strategia.
    Inserire printf multipli, ad ogni passo, per capire quando si blocca, e risalire al problema.
    Assai istruttivo
  • Re: C Errore di segmentazione(core dump creato)

    Guarda che il carattere \n non viene memorizzato nella stringa dalla scanf e quindi quel ciclo

    while(x[ i ] != '\n') {

    sfonda il vettore e balla in memoria ... ovvio
Devi accedere o registrarti per scrivere nel forum
2 risposte