首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作系统

操作系统
EN

Stack Overflow用户
提问于 2011-04-02 11:00:48
回答 2查看 535关注 0票数 1

我正在尝试使用C++中的fork()wait()系统调用。

我的代码非常简单。然而,我得到了以下错误:

代码语言:javascript
复制
error C3861: 'fork': identifier not found 

我已经包含了以下头文件。我必须在这里包含一些其他的头文件吗?我到底做错了什么?

代码语言:javascript
复制
#include<stdafx.h>
#include <sys/types.h>
#include <signal.h>

int main(){

    if(fork()==0)
    {
        printf("from child");
    }
    else
    {
        printf("from parent");
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-02 11:02:54

fork()仅在posix系统上可用。它在windows上肯定是不可用的。您确定您的操作系统提供了fork吗?

票数 4
EN

Stack Overflow用户

发布于 2011-04-02 11:03:52

通常,您还需要以下内容才能获得fork()

代码语言:javascript
复制
 #include <unistd.h>

但是,您似乎正在使用Windows,而fork()在Windows上不可用。This page讨论了一种Windows解决方案。

最大的不同之处之一在于流程模型。UNIX有fork,而Win32没有。根据fork的使用和代码库的不同,Win32有两个可以使用的API: CreateProcess和CreateThread。派生自身多个副本的UNIX应用程序可以在Win32中修改为具有多个进程或具有多个线程的单个进程。如果使用多个进程,那么可以使用多个IPC方法在进程之间进行通信(如果需要fork提供的功能,还可以将新进程的代码和数据更新为父进程)。有关进程间通信的更多信息,请参见进程间通信。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5520823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档