【问题标题】:How can I start a sub-process in Windows?如何在 Windows 中启动子进程?
【发布时间】:2012-02-27 05:01:47
【问题描述】:

在 POSIX 中,有 fork() 函数来创建子进程。如何在 Windows 中实现fork() 的功能?

【问题讨论】:

  • 想知道什么?如何在Windows上创建线程编程?
  • 哦,不,我在学习linux时遇到了麻烦......在Windows上,我们可以使用函数CreateThread(...)来创建一个线程。但是在Linux上,有一个函数fork()来创建子进程,我想知道Window上是否有类似于fork()的函数...
  • 据我所知你可以使用 _spawn()、_beginthread() 和 _endthread()。
  • 以太我有点厚,或者你提出问题的方式很独特......反正有 CreateProcess():msdn.microsoft.com/en-us/library/windows/desktop/…

标签: windows fork


【解决方案1】:

在 Windows 上没有直接等效的 fork()

CreateProcess() 是可用于创建新进程的本机函数(但同样,语义与 fork() 的语义完全不同)。

换句话说,在 Unix 上,进程可以廉价地创建自己的克隆。在 Windows 上没有廉价的方法可以做到这一点。

如果您不关心fork() 的克隆方面,那么CreateProcess() 应该就可以了。

【讨论】:

  • 但是,CreateProcess() 和 fork() 有什么不同呢?
  • @Tu_JianWu:fork()创建的新进程继承了父进程的状态,包括变量值和当前指令指针。 CreateProcess() 创建的新进程不会,它是从头开始的。同样 fork() 只能创建已经运行的可执行文件的新副本, CreateProcess() 可以启动任何可执行文件。
猜你喜欢
  • 2013-09-18
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
相关资源
最近更新 更多