获取声明错误

Getting declaration errors

我正在尝试 运行 以下 C++ 代码。我收到了一些我似乎无法弄清楚的声明错误。错误块在代码下方给出。

我正在尝试编写一个程序,使用 fork() 系统调用计算子进程中给定数字的阶乘。输入整数将通过命令行给出。对于前。如果给定 6,输出将为 720。由于父项和子项都有自己的数据副本,因此子项将不得不输出阶乘。父进程必须调用wait()等待子进程完成后才能退出程序。

#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);
    }
}

尽管在代码中声明了 fork,但我还是遇到了这些错误:

main.cpp:13:13: 错误:'fork' 未在此范围内声明
pid = fork();
main.cpp:20:48: 错误:'getpid' 未在此范围内声明 printf("nnChild PID is %ldnn", (long) getpid());

尝试使用

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

这些是声明函数和必要类型的头文件。

fork()getpid() 的定义未知,因为您没有包含正确的头文件:

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

要知道你必须为那些系统功能包括什么,你可以参考手册第2节。例如:man 2 fork