0

可能重复:
为什么我的编译器不接受 fork(),尽管我包含了 <unistd.h>?

可能重复:尽管我包含 unistd.h,为什么我的编译器不接受 fork

该程序无法在 gcc 上运行……并给出链接器错误……即未定义的 fork 引用……

#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否则在该平台上不可用。

老实说,我不确定你是如何编译的,因为 Windows 通常没有unistd.h,除非你安装了 SFU 或 MinGW(尽管必须unistd.h简化编译代码的任务(更少的条件编译),没有提供比 Windows 更多的功能)。

于 2012-10-27T10:06:18.393 回答
2

fork在 Windows 上不存在(除非您使用的是Cygwin)。改为使用CreateProcess

于 2012-10-27T10:05:02.217 回答