window系统下C语言找不到fork()函数

window系统下C语言找不到fork()函数

有次模拟进程时,想在window系统下调用fork()函数,但是就是引入相关头文件都无法找到函数,一开始是怀疑是否引入的头文件有误或者缺失,发现并没有缺失或者错误,然后就怀疑上了是操作系统不同引起的。后来查找博文,才发现window下没有fork函数。

window下没有一个函数可以实现UNIX下的fork()函数,其原因是历史造成的.对于UNIX来说它一出生就是多用户的系统,所以它的所有进程都共有一个最原始的父进程init.而windows生下来时是个单用户系统(DOS),不存在这样的概念.所以fork这个函数是UNIX下特有的.
如果硬要模似,CreateProcess()不如用CreateThread()更接近实际情况,把主thread中的所有公共变量都塞入一个结构/类的,带入新的thread中,这样可以大致完成"复制自身"的要求.
但由于是thread,所以主thread死后,子thread不能独立存在,而fork()出来的子进程可以脱离主进程独立存在,这一点在window下只有CreateProcess()才略有相似之处.
总之,实现类似fork()的功能在window下是复杂,必须个案处理,无法"一言以蔽之曰".

原文链接:https://blog.csdn.net/hfuuhgcc/article/details/84086205

猜你喜欢

转载自blog.csdn.net/qq_43203949/article/details/105763798