2016-05-19 15 views
0

Ich versuche, das folgende Stück Code in C++ auszuführen. Ich bekomme ein paar Deklarationsfehler, die ich nicht zu verstehen scheint. Der Fehlerblock ist unterhalb des Codes angegeben.Fehler bei der Deklaration

Ich versuche, ein Programm zu schreiben, das das faktorielle einer bestimmten Zahl in dem unterordneten Prozess mit dem Systemaufruf fork() berechnet. Die Eingabe-Ganzzahl wird über die Befehlszeile angegeben. Für Beispiel Wenn 6 gegeben ist, wird die Ausgabe 720 sein. Da Eltern und Kind ihre eigenen Kopien der Daten haben, muss das Kind die Fakultät ausgeben. Das übergeordnete Element muss den Aufruf wait() aufrufen, um darauf zu warten, dass der untergeordnete Prozess beendet wird, bevor das Programm beendet wird.

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

int main(){ 
    int num; 
    int fact=1; 
    int pid, k=1; 
    int status; 
    printf("Enter a number....nn"); 
    scanf("%d",&num); 
    printf("n"); 
    pid = fork(); 
    if (pid == -1){ 
     printf("Error Occured in Forking a Process..n"); 
     exit(0); 
    } 
    //child process 
    if (pid==0){ 
     printf("nnChild PID is %ldnn", (long) getpid()); 
     int i=0; 
     if(num==0||num==1){ 
      fact=1; 
      exit(fact); 
      } 
      else{ 
      for(i=1;i<=num;i++){ 
       fact = fact * i; 
       //printf("fact= %d",fact); 
      } 
      printf("n Child Execution Completed...n"); 
      exit(fact); 
     } 
    } 
    else{ 
     wait(&k); 
     printf(" K= %d",k); 
     int f=WEXITSTATUS(k); 
     printf("nNow in parentnn"); 
     printf("nn Factorial of %d is %d ",num,f); 
    } 
} 

Ich erhalte diese Fehler, obwohl Gabel im Code deklariert ist:

main.cpp: 13: 13: Fehler: 'fork' wurde nicht in diesem Bereich erklärt
pid = fork();
main.cpp: 20: 48: Fehler: 'getpid' wurde in diesem Bereich nicht deklariert printf ("nnChild PID ist% ldnn", (lang) getpid());

+3

Warum wird dies als C++ markiert? Es sieht für mich wie normaler C-Code aus? –

Antwort

0

Die Definition von fork() und getpid() nicht knwon, weil Sie nicht die richtigen Header-Dateien enthalten sind:

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

Um zu wissen, was man für die Systemfunktion enthalten hat, können Sie an dem Mann Abschnitt beziehen 2. Zum Beispiel: man 2 fork

0

Versuchen Sie es mit

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

Dies sind die Header-Dateien, in denen die Funktionen und die notwendigen Typen deklariert werden.

Verwandte Themen