0

重複の可能性:
<unistd.h> が含まれているにもかかわらず、コンパイラが fork() を受け入れないのはなぜですか?

重複の可能性: unistd.h が含まれているにもかかわらず、コンパイラが fork を受け入れないのはなぜですか

このプログラムは gcc で動作していません...そしてリンカ エラーが発生します..つまり、フォークへの未定義の参照...

#include<stdio.h>  
#include<stdlib.h>  
#include<unistd.h>    

int main()  
{  
    int a=10;  
    if (a==10 && fork())  
        printf("hello");  
    else  
        printf("world");  

    system("pause");  
    return 0;  
}
4

2 に答える 2

6

を使用しているという事実system("pause")(ちなみに、単純に を使用できる場合は悪い考えですgetchar()) から、Windows で実行していると思われます。CygWin のようなエミュレーション レイヤーを使用しない限り、forkそのプラットフォームでは使用できません。

正直なところ、unistd.hおそらく SFU または MinGW をインストールしていない限り、Windows には通常どちらもインストールされていないため、どのようにコンパイルできたのかさえわかりません (unistd.hコードをコンパイルするタスクを容易にする必要があるにもかかわらず (条件付きコンパイルが少ない)、 Windows で得られるものよりも多くの機能を提供するわけではありません)。

于 2012-10-27T10:06:18.393 に答える
2

forkWindows には存在しません ( Cygwinを使用している場合を除く)。CreateProcess代わりに使用してください。

于 2012-10-27T10:05:02.217 に答える