【发布时间】:2016-09-16 12:34:07
【问题描述】:
我正在尝试在 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());
【问题讨论】:
-
为什么这被标记为 C++ ?对我来说它看起来像普通的 C 代码?
标签: c unix process operating-system