我需要我的应用程序能够在新进程下运行一些方法,并且理想情况下能够从这些方法中获取返回值,但是我还没有找到如何做到这一点(我的 C++ 知识非常基础) .
为了更好地解释,假设我有方法 A、A1 和 A2。方法 A 将开始执行,并在某个时刻它将:
- 在新进程下运行方法 A1
- 等待A1完成并可能获得返回值
- 在另一个新进程下运行方法A2
- 等待A2完成,再次获取返回值
- 继续在原进程下运行代码
我发现我可以使用fork()
在子进程中运行代码,但这不符合我的需求,因为它似乎是创建父进程的拷贝,而不仅仅是运行我只想要新进程中的特定代码。这是我尝试过的摘录,我不确定是否可以对其进行修改以实现我想要的功能,或者我是否应该完全使用其他东西:
int main(){
std::cout << "START" << std::endl;
test1();
test2();
std::cout << "FINISH" << std::endl;
return 0;
}
void test1(){
pid_t pid = fork();
if (pid == 0){
int i = 0;
for (; i < 5; ++i) {
std::cout << "Test 1 " << std::endl;
}
}
}
void test2(){
pid_t pid = fork();
if (pid == 0){
int i = 0;
for (; i < 5; ++i) {
std::cout << "Test 2 " << std::endl;
}
}
}
然而,这会导致 test2()
被执行两次,并且由于父进程被复制到子进程,FINISH 被打印了 4 次。
目前我正在 Linux 上执行此操作,但最终我需要在 Windows 上执行相同的操作。
最佳答案
关于c++ - 在新进程中运行方法并等待它们完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769976/