不,C++标准(特别是C++ 11)不具有过程(因此我不能在这里给你一个更合理的参考从最流行,目前最一search result任何概念最新的C++文档站点)。我也不知道对下一个标准版本C++ - 17(又名C++ - 1z)计划进程支持。至少Wikipedia Site没有提到它。
有一个流行的implementation提出了提升,但从来没有为C++标准提案绘制。
您通常无法编写便携代码在裸机系统上运行,其中只有一个进程存在。
然而,有一个单独的进程来执行bar()
功能的方法吗?
要做到这一点最简单的方法是由POSIX公开组指定退却到fork()
和wait()
:
#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