2012-02-05 24 views
6

En POSIX, existe la función fork() para crear un subproceso. ¿Cómo puedo lograr la funcionalidad de fork() en Windows?¿Cómo puedo iniciar un subproceso en Windows?

+4

¿Qué quieres saber? ¿Cómo crear una programación de subprocesos en Windows? – Mithrandir

+0

oh, no, tengo un problema cuando estudio Linux ... En Windows, podemos usar la función CreateThread (...) para crear un hilo. Pero en Linux, hay una función fork() para crear un proceso hijo, quiero saber si hay una función similar a fork() en Window ... –

+0

Hasta donde sé, puedes usar _spawn(), _beginthread () y _endthread(). – Mithrandir

Respuesta

7

No hay un equivalente directo de fork() en Windows.

CreateProcess() es la función nativa que se puede utilizar para crear un nuevo proceso (pero, de nuevo, la semántica es bastante diferente a la de fork()).

Para decirlo de otra manera, en Unix es posible que un proceso cree a bajo precio un clon de sí mismo. No hay una forma económica de hacerlo en Windows.

Si no te importa el aspecto de clonación de fork(), entonces CreateProcess() debería funcionar bien.

+0

Pero, ¿qué hay de diferente entre CreateProcess() y fork()? –

+4

@Tu_JianWu: el nuevo proceso creado por fork() hereda el estado principal, incluido el valor de las variables y el puntero de instrucción actual. El nuevo proceso creado por CreateProcess() no, se inicia desde cero. También fork() solo puede crear una nueva copia del ejecutable que ya se está ejecutando, CreateProcess() puede ejecutar cualquier exectuable. –

+0

@Harry Johnston: Gracias ... –

Cuestiones relacionadas