Question

I have to program a little program that show a Fibonacci sequence from 1 to n. 1 to 18 works great. But from 19 the program does nothing at all and just exit as it's done. I can not find the error... so please give me an hint.

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

int main(int argc, char **argv)
{
  pid_t pid;
  int fib[argc];
  int i, size;
  size = strtol(argv[1], NULL, 0L);
  fib[0] = 0;
  fib[1] = 1;
  pid = fork();
  printf("size = %d \n", size);
  if(pid == 0){
    for(i = 2; i < size; i++){
      fib[i] = fib[i-1] + fib[i-2];
    }
    for(i = 0; i < size; i++){
      printf("\n\t %d ", fib[i]);
    }
  }
  else if(pid > 0){ // Parent, because pid > 0
    wait(NULL);
    printf("\n");
    exit(1);
  }
}
Was it helpful?

Solution

Some issues are:

  1. fib[0] should be 1, not 0.
  2. Size of fib array is wrong.
  3. And array fib is defined wrong too.
  4. Seems that for fill random membery, not fib array elements.

OTHER TIPS

Still this code doesn't look very good. You haven't posted includes and for-loop is incomplete. It doesn't even contain code that will actually compute the sequence values.

Next problem is the purpose of forking here. What you want to do is to perform simple sequential calculation. There is no need for fork at all.

I recommend a bit more work on this before submitting this for grade.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top