2012-02-05 4 views
6

В POSIX существует функция fork() для создания подпроцесса. Как я могу достичь функциональности fork() в Windows?Как запустить подпроцесс в Windows?

+4

Что хотите знать? Как создать потоковое программирование в Windows? – Mithrandir

+0

О, нет, у меня проблема при изучении linux ... В Windows мы можем использовать функцию CreateThread (...) для создания потока. Но в Linux существует функция fork() для создания дочернего процесса, я хочу знать, что существует функция, похожая на fork() на Window ... –

+0

Насколько я знаю, yu может использовать _spawn(), _beginthread () и _endthread(). – Mithrandir

ответ

7

В Windows нет прямого эквивалента fork().

CreateProcess() - это нативная функция, которая может быть использована для создания нового процесса (но, опять же, семантика отличается от fork()).

Чтобы сделать это другим способом, в Unix можно для процесса дешево создать клон самого себя. В Windows нет недорогого способа сделать это.

Если вам не нужен аспект клонирования fork(), то CreateProcess() должен делать все отлично.

+0

Но чем отличается CreateProcess() и fork()? –

+4

@Tu_JianWu: новый процесс, созданный fork(), наследует состояние родителя, включая значение переменных и текущий указатель инструкции. Новый процесс, созданный CreateProcess(), не работает, он запускается с нуля. Также fork() может создать только новую копию исполняемого файла, который уже запущен, CreateProcess() может запускать любые exectuable. –

+0

@ Харри Джонстон: Спасибо ... –

Смежные вопросы