Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fibonacci using fork() in the child process

Tags:

c

linux

fork

system

I wrote the code below for homework purposes. When I run it on XCode in OSX, after the sentence "Enter the number of a Fibonacci Sequence:", I enter the number 2 times. Why 2 and only 1 scanf.

The code :

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

int main()

{



int a=0, b=1, n=a+b,i;


printf("Enter the number of a Fibonacci Sequence:\n");
scanf("%d ", &i);

pid_t pid = fork();
if (pid == 0)
{
    printf("Child is make the Fibonacci\n");
    printf("0 %d ",n);
    while (i>0) {
        n=a+b;
        printf("%d ", n);
        a=b;
        b=n;
        i--;
        if (i == 0) {
            printf("\nChild ends\n");
        }
    }
}
    else 
    {
        printf("Parent is waiting for child to complete...\n");
        waitpid(pid, NULL, 0);
        printf("Parent ends\n");
    }
    return 0;
}
like image 976
Bobj-C Avatar asked Nov 22 '10 14:11

Bobj-C


1 Answers

You have a space after %d in your scanf. Try scanf("%d", &i);.

like image 125
Chris Avatar answered Sep 25 '22 16:09

Chris