1. ホーム
  2. c

[解決済み] <unistd.h> をインクルードしているのに、なぜコンパイラは fork() を受け付けないのですか?

2022-02-05 17:50:33

質問

以下は私のコードです(fork()をテストするためだけに作成しました)。

#include <stdio.h>  
#include <ctype.h>
#include <limits.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h> 

int main()
{   
    int pid;     
    pid=fork();

    if (pid==0) {
        printf("I am the child\n");
        printf("my pid=%d\n", getpid());
    }

    return 0;
}

以下のような警告が表示されます。

warning: implicit declaration of function 'fork'
undefined reference to 'fork'

何が問題なのか?

解決方法は?

unistd.hfork の一部です。 POSIX規格 . ウィンドウズでは利用できません ( text.exe を入力すると、*nix 以外であることを示すヒントが得られます。)

の一部としてgccを使用しているようです。 MinGW を提供し、その結果 unistd.h のような機能は実装していません。 fork . Cygwin が行います。 のような関数の実装を提供します。 fork .

ただし、これは宿題なので、動作環境の入手方法についてはすでに指示があるはずです。