операционные системы - PullRequest
       2

операционные системы

1 голос
/ 02 апреля 2011

Я пытаюсь использовать системные вызовы fork() и wait() в C ++.

Мой код действительно прост. Однако я получаю следующую ошибку:

error C3861: 'fork': identifier not found 

Я включил следующие файлы заголовков. Нужно ли включать сюда другие заголовки? Что я делаю не так?

#include<stdafx.h>
#include <sys/types.h>
#include <signal.h>

int main(){

    if(fork()==0)
    {
        printf("from child");
    }
    else
    {
        printf("from parent");
    }
}

Ответы [ 2 ]

9 голосов
/ 02 апреля 2011

Обычно для получения fork() также требуется следующее:

 #include <unistd.h>

Однако вы, похоже, используете Windows, а fork() недоступно в Windows. На этой странице обсуждается обходной путь Windows.

Одна из самых больших различий заключается в модели процесса.UNIX имеет форк;Win32 нет.В зависимости от использования fork и кодовой базы, Win32 может использовать два API: CreateProcess и CreateThread.Приложение UNIX, которое разветвляется на несколько своих копий, может быть переработано в Win32, чтобы иметь несколько процессов или один процесс с несколькими потоками.Если используется несколько процессов, существует несколько методов IPC, которые можно использовать для связи между процессами (и, возможно, для обновления кода и данных нового процесса, чтобы они были похожи на родительский, если требуется функциональность, предоставляемая вилкой).Подробнее о IPC см. В разделе Межпроцессные коммуникации.

4 голосов
/ 02 апреля 2011

fork() доступно только в системах posix. Это конечно не доступно на окнах. Вы уверены, что ваша операционная система предоставляет fork?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...