fork函数调用(在VC中调用FORK()文件应该加什么头文件fork()本来是在linux环境下调用的)
本文目录
- 在VC中调用FORK()文件应该加什么头文件fork()本来是在linux环境下调用的
- 如何在windows系统下用C(C++)语言实现LINUX(UNIX)下的fork函数的调用
- windows能否调用fork()函数
- main函数中连续调用两次fork()为什么会输出六行
在VC中调用FORK()文件应该加什么头文件fork()本来是在linux环境下调用的
windows本身没有fork()函数。
如果要用fork(),可以试试Cygwin。
#include 《stdio.h》
int main()
{
int pid;
/*这里创建了一个子进程1*/
pid=fork();
if(pid==0)
printf("I am son,my pid is %d.\n",getpid());
else if(pid》0)
{
/*从子进程1返回到父进程时,bai再创建子进程2。*/
printf("I’m father ,my pid is %d.\n",getpid());
pid=fork();
if(pid==0)
printf("I’m daughter process,my pid is %d.\n",getpid());
else if(pid》0)
printf("I’m father process,my pid is %d.\n",getpid());
else
printf("fork() error.\n");
}
else printf("fork() error.\n");
}
扩展资料:
fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。
如何在windows系统下用C(C++)语言实现LINUX(UNIX)下的fork函数的调用
在window下没有一个函数可以实现UNIX下的fork()函数,其原因是历史造成的.对于UNIX来说它一出生就是多用户的系统,所以它的所有进程都共有一个最原始的父进程init.而windows生下来时是个单用户系统(DOS),不存在这样的概念.所以fork这个函数是UNIX下特有的.如果硬要模似,CreateProcess()不如用CreateThread()更接近实际情况,把主thread中的所有公共变量都塞入一个结构/类的,带入新的thread中,这样可以大致完成"复制自身"的要求.但由于是thread,所以主thread死后,子thread不能独立存在,而fork()出来的子进程可以脱离主进程独立存在,这一点在window下只有CreateProcess()才略有相似之处.总之,实现类似fork()的功能在window下是复杂,必须个案处理,无法"一言以蔽之曰".
windows能否调用fork()函数
一般不能。除非使用Cygwin自带的GCC可以,实际上Cygwin是把Windows API包装了一下。另,Windows上创建进程一般使用CreateProcess函数。
main函数中连续调用两次fork()为什么会输出六行
第一次fork()产生主进程和子进程1主进程和子进程1分别执行第一个printf输出A主进程第二次fork()产生主进程和子进程2,子进程1第二次fork产生子进程1和子进程3主进程、子进程1、子进程2、子进程3分别执行第二个printf输出B最终输出2个A,4个B。
更多文章:
coconut milk(do you need some还是any coconut milk)
2024年5月7日 18:31
哥伦比亚球员(铁血球员科尔多巴,在混乱的哥伦比亚足坛他是如何崛起的)
2024年7月18日 01:20
杀人诛心的意思是什么?杀人诛心什么意思 最好举个例子 通俗易懂的,,,
2024年8月25日 19:40
在home目录下创建文件(怎么在虚拟机Linux系统home目录下增加目录)
2024年8月20日 14:35
exercise的ing形式(exercise现在进行时怎么写)
2024年2月15日 20:20
spring boot api接口开发(springboot聚合项目如何对外暴露api)
2024年7月20日 20:25
PHP添加注释问题?怎么注释掉PHP段落代码 下面的这一段落都要注释掉,不要了,怎么弄
2024年7月10日 22:43
perl数组复杂操作(如何用Perl对字符串或者数字数组进行排序)
2024年7月3日 12:01