我想问题说明了一切.

我想用fork 叉windows .最相似的操作是什么?我该如何使用它.

推荐答案

Cygwin在Windows上提供了完整的fork()功能.因此,如果您可以接受使用Cygwin,那么在性能不成问题的情况下问题就解决了.

否则,您可以看看Cygwin如何实现fork().来自一个相当古老的Cygwin建筑doc:

5.6.流程创建 Cygwin的Forking 呼叫特别有趣 因为它不能很好地映射到 Win32 API.这让它变得非常 难以正确实施. 目前,Cygwinfork 是一种 非写入时拷贝实施 类似于早期出现的情况 UNIX的风格.

发生的第一件事是当一个 父进程派生一个子进程 父级初始化一个空间 在Cygwin进程表中为 子元素.然后,它创建一个挂起的 使用Win32的子进程 CreateProcess调用.接下来,父级 进程调用setjmp来保存它自己的 上下文,并在 Cygwin共享内存区(共享 在所有Cygwin任务中).然后它就会填满 在子项的.data和.bss部分中 通过从其自己的地址空间复制 进入停学 children 的地址 太空.在子元素的地址空间之后 初始化时,子对象在运行时 父级等待互斥锁.这子元素 发现它是被Forking 的 使用保存的 skip 缓冲区进行跳远. 然后,子级将互斥锁设置为 父级正在等待并阻止 另一个互斥体.这是一个信号, 要复制其堆栈和堆的父级 进入子元素体内,之后它 释放子级所在的互斥锁 等待并从岔口返回 打电话.最后,子元素从睡梦中醒来 阻塞最后一个互斥体,重新创建 传递给它的任何内存映射区域 通过共享区域,并从 fork 自己.

而我们对如何

但是,spawn和exec会展示他们的

听起来工作量很大,不是吗?是的,它是Slooow.

编辑:单据已过期,请查看此优秀answer进行更新

C++相关问答推荐

从其自己的参数中循环调用main(在VLA中滥用sizeof)是标准C99吗?

int_leastX_t与intX_t不同吗?

在CIL中运行时,sscanf返回0

传递给空闲的无效地址0x71 db7 cb5e0:未分配值

如何避免使用相对路径包含在c中

如何设置指针指向在函数中初始化的复合文字中的整数?

使用NameSurname扫描到两个单独的字符串

当多个线程在C中写入相同的文件描述符时,如何防止争用情况?

我无法让LLDB正确运行我的可执行文件

C语言中的strstr问题

预先分配虚拟地址空间的区域

整型文字后缀在左移中的用途

为什么指针运算会产生错误的结果?

C I/O:在Windows控制台上处理键盘输入

如何使用唯一数字对整型进行分区

如何在c中使用具有不同变量类型的内存分配?

将 struct 数组写入二进制文件时发生Valgrind错误

在git补丁中自动添加C的宏

如何修复数组数据与列标题未对齐的问题?

malloc:损坏的顶部大小无法找出问题