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());
Warum wird dies als C++ markiert? Es sieht für mich wie normaler C-Code aus? –