2016-05-19 7 views
0

次のコードをC++で実行しようとしています。私は理解できないと思われるいくつかの宣言エラーが発生しています。エラーブロックはコードの下に与えられます。宣言エラーを取得する

fork()システムコールを使用して、子プロセスで特定の数値の階乗を計算するプログラムを作成しようとしています。入力整数はコマンドラインから与えられます。例えば、 6が与えられた場合、出力は720になります。親と子はそれ自身のデータのコピーを持つので、子は階乗を出力しなければなりません。親プロセスは、プログラムを終了する前に子プロセスが完了するのを待つためにwait()呼び出しを呼び出さなければなりません。

main.cppに:13:13:エラー: 'フォーク' がこのスコープで宣言されていなかった
PID =フォークフォークはコード内で宣言されているものの

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

私は、これらのエラーを取得しています();
main.cpp:20:48:エラー: 'getpid'がこのスコープで宣言されていませんでしたprintf( "nnChild PID is%ldnn"、(long)getpid());

+3

なぜこれはC++とタグ付けされていますか?私には普通のCコードのように見えますか? –

答えて

0

fork()getpid()の定義はknwonされていません。

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

あなたがそれらのシステムの機能に含まれているかを知るために、あなたは男のセクションを参照してくださいすることができます2.例:man 2 fork

0

は、これらの機能と、必要な型が宣言されているヘッダファイルです

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

を使用してみてください。あなたは右のヘッダファイルが含まれていなかったので、

関連する問題