我正在尝试在C ++中使用fork()
和wait()
系统调用。
我的代码非常简单。但是我收到以下错误:
error C3861: 'fork': identifier not found
我已经包含以下头文件。我是否必须在此处添加其他标题?我做错了什么?
#include<stdafx.h>
#include <sys/types.h>
#include <signal.h>
int main(){
if(fork()==0)
{
printf("from child");
}
else
{
printf("from parent");
}
}
答案 0 :(得分:9)
通常,您还需要以下内容才能获得fork()
:
#include <unistd.h>
但是,您似乎在使用Windows,并且fork()
在Windows上不可用。 This page讨论了Windows解决方案。
最大的差异之一 是在过程模型中。 UNIX有 叉子; Win32没有。取决于 使用fork和代码库,Win32 有两个可以使用的API: CreateProcess和CreateThread。一个UNIX 分发多份副本的应用程序 它本身可以在Win32中重新编写 有多个过程或一个 具有多个线程的单个进程。 如果使用多个进程,那么 可以使用多种IPC方法 被用来沟通 进程(也许更新 新流程的代码和数据 像父,如果功能 需要fork提供)。对于 有关IPC的更多信息,请参阅Interprocess Commuications。
答案 1 :(得分:4)
fork()
仅适用于posix系统。它当然不适用于Windows。你确定你的操作系统提供了fork吗?