如何在windows系统下用C(C++)语言实现LINUX(UNIX)下的fork函数的调用

现在要在windows7系统下,用visualstdio2013编译,想调用LINUX(UNIX)下才能调用的fork函数,但无法调用,在不用虚拟机、MinGW等软件的情... 现在要在windows 7系统下,用visual stdio 2013编译,想调用LINUX(UNIX)下才能调用的fork函数,但无法调用,在不用虚拟机、MinGW等软件的情况下,如何实现fork的功能,如果不能直接调用,怎样自己编写一个函数而实现和fork函数同样功能的函数,求在windows系统下C(C++)语言编译的源代码,求大神指导!!!急!!!如果好使,有悬赏!!! 展开
 我来答
杰克萧
2013-10-28 · TA获得超过364个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:447万
展开全部
在window下没有一个函数可以实现UNIX下的fork()函数,其原因是历史造成的.对于UNIX来说它一出生就是多用户的系统,所以它的所有进程都共有一个最原始的父进程init.而windows生下来时是个单用户系统(DOS),不存在这样的概念.所以fork这个函数是UNIX下特有的.

如果硬要模似,CreateProcess()不如用CreateThread()更接近实际情况,把主thread中的所有公共变量都塞入一个结构/类的,带入新的thread中,这样可以大致完成"复制自身"的要求.

但由于是thread,所以主thread死后,子thread不能独立存在,而fork()出来的子进程可以脱离主进程独立存在,这一点在window下只有CreateProcess()才略有相似之处.

总之,实现类似fork()的功能在window下是复杂,必须个案处理,无法"一言以蔽之曰".
WM_THU
2013-10-27 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3932万
展开全部
win32API里自己有创建线程用的函数,为什么一定要仿照fork呢?这本来就是两个不同的操作系统,思想也不一样。随便google一下都能找到。
更多追问追答
追问
那能帮我写一个类似的源代码么?创建一个新进程,而进行两次返回值,子进程中返回0值而父进程中返回子进程ID,要没有编译错误的独立的函数程序源代码,谢了!
追答
建议您还是自己google,好好学习一下,windows的机制相对直接一些,您要是会fork肯定能会这个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式