下面的代码是否运行两个子进程,从 C++ 中的单个父进程并行执行
Does the following code runs two child process executing in parallel from a single parent process in C++?
我已经读到fork可用于运行两个子进程,C++中说明如何创建两个子进程从单个父进程并行执行C++?;但是,没有示例来创建我自己的实验。因此,我使用了以下代码,但我不确定这两个进程是否并行执行。此外,由于任务是从两个设备捕获数据,因此需要在不同的终端中运行它们,我唯一想到的是使用以下行:
system("xterm -e ./task1");
但是,一旦执行了以下输出,则 sh: 1: term: not found
我将感谢您抽出时间提供任何建议或指导
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char **argv)
{
cout << "--beginning of program" << endl;
int counter = 0;
pid_t pid = fork();
if (pid == 0)
{
// child process
system("./task1");
cout << "child process" << endl;
}
else if (pid > 0)
{
// parent process
system("./task2");
cout << "parent process" << endl;
}
else
{
cout << "fork() failed!n" << endl;
return 1;
}
cout << "--end of the program" << endl;
return 0;
}
问题标题意味着您认为此代码创建了两个子进程和一个父进程,总共三个进程,而问题正文暗示您认为有一个父进程和一个子进程。 我不清楚你到底相信哪一个。
可以肯定的是:此代码将创建一个与父进程并行运行的额外子进程,总共有两个进程。
相关文章:
- 终止 QProcess 不会终止子进程
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 子进程更新共享 mmap 内存,但父进程没有更改
- 使用 waitpid 时等待子进程终止
- 使用重定向标准处理子进程中的 kbhit
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- kill() 总是返回 0(成功),即使在子进程已经结束之后?
- 父进程和子进程之间的 POSIX 信号量
- 检测到由于操作系统内存不足而导致子进程终止
- 使用system()创建独立的子进程
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 在 Bash 脚本中处理来自子进程的信号
- Qt C++ - 如何成功将数据传递给子进程?
- C++ 窗口本地系统模拟在子进程中失败
- 将类型化数组写入子进程 stdin 无法正常工作
- 将 nodejs 脚本作为子进程执行(而不是从其他脚本执行)
- 使用信号检测子进程何时终止的最佳方法是什么?
- 等待等待失效的子进程
- 如何在Windows上通过QProcess启动提升的子进程?