【发布时间】:2016-04-21 12:42:02
【问题描述】:
我需要我的应用程序能够在新进程下运行一些方法,并且最好能够从这些方法中获取返回值,但是我还没有找到如何做到这一点(我的 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 上执行相同操作。
【问题讨论】:
-
你可能想要threads。
-
对于我需要的东西,不幸的是它必须是一个单独的进程,而不仅仅是多线程:-/
标签: c++ linux process createprocess