Нет, C++ стандарт (в частности, C++ 11) не имеет понятия процесса (поэтому я не могу дать вам более разумную ссылки здесь как search result из самых популярных и в настоящее время наиболее обновленный сайт документации C++).
Я также не знаю, что поддержка процесса запланирована для следующей стандартной версии C++ - 17 (aka C++ - 1z). По крайней мере, Wikipedia Site не упоминает об этом.
Существует популярный implementation, который был предложен для повышения, но это никогда не было нарисовано для стандартного предложения C++.
Обычно вы не можете писать портативный код для работы на голых металлических системах, где существует только один процесс.
Однако, есть способ, чтобы выполнить функцию bar()
в отдельном процессе?
Самый простой вариант, чтобы сделать это, чтобы Откат к fork()
и wait()
, как указано в POSIX Open Group:
#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
void bar()
{
std::cout << "bar()\n";
}
int main(int argc, char **argv)
{
pid_t pid = fork();
if (pid == 0)
{
// child process
bar();
}
else if (pid > 0)
{
// parent process
wait(NULL);
}
else
{
// fork failed
std::cerr << "fork() failed!" << std::endl;
return 1;
}
return 0;
}
Хотя я не вижу много точки, чтобы создать дополнительный процесс для выполнения простой функции. Создание процесса создает много накладных расходов, которые вам не нужны в этом случае.
Ну, если вы хотите запустить другую программу, используя функции из семейства функций exec()
, это другой вариант использования.
Я рекомендую придерживаться std::thread
s для вашего примера.
'fork' .......? –
@MarcB Это не стандартная функция C++? Другими словами, он должен быть предоставлен конкретным компилятором, не так ли? –
'fork' не входит в стандартную библиотеку, это функция posix. – ThomasMcLeod