获取声明错误
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
我正在尝试 运行 以下 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