2010-09-24 5 views
0

J'essaie d'exécuter un programme de simulation pour tester l'algorithme FIFO, mais mon programme ne fait que s'écraser. c'est le principal, d'autres fonctions non montrées. Can place de quelqu'un pour moi le problem.Am pas familier avec l'utilisation du principal argument [int main (int argc, char * argv [])] J'ai les fichiers de test dans un dossierExécution d'une simulation FIFO

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

    if (argc != 3) 
{ 
printf("The format is: pager file_name memory_size.\n"); 
//exit(1); 
} 

    printf("File used %s, resident set size %d\n", argv[1], atoi(argv[2])); 

if ((stream = fopen(argv[1], "r")) == NULL) 
{ 
    perror("File open failed"); 
//exit(1); 
} 
    mem_size = atoi(argv[2]); 
start_simulation(stream); 
fclose(stream); 
system("pause"); 
} 
+0

Je devine 'mem_size' est un variable globale et vous n'avez aucune erreur de syntaxe. – Dan

+1

Pouvez-vous parcourir avec gdb pour savoir sur quelle ligne il se bloque? – AlcubierreDrive

+1

Comment se bloque-t-il exactement? Si vous commentez votre code, ligne par ligne mais en le gardant compilable, quand il arrête de s'écraser? – Alin

Répondre

0

Uncomment les appels pour quitter.

if (argc != 3) { 
// insufficient arguments passed..print error and exit. 
printf("The format is: pager file_name memory_size.\n"); 
exit(1); 
} 

Dans votre cas (sortie commenté) si le votre ne fournit pas d'arguments cmd ligne, argv[1] aura NULL et cela peut provoquer l'accident quand il est utilisé dans fopen

+0

Eh bien juste remarqué que le son n'est pas en train d'ouvrir le fichier stream.if je ne commente pas la sortie (1), il se ferme immédiatement. –

+0

Sa sortie parce que vous ne fournissez pas assez args cmd-line et c'est ce que nous voulons. – codaddict

+0

Linux ou Windows? – codaddict