c++ - 使用fork,execvp执行UNIX命令

我正在尝试创建一个程序,该程序接收包含UNIX命令列表的输入文件,并以特定顺序执行这些命令。
我正在学习fork()wait()execvp()系统调用,并且对等待和分叉模式有一些疑问。
这是我用于执行流程的结构。进程可以并行或顺序执行。我将在订购时决定。
假设我必须按照A,B,C D,E的顺序执行流程。

这是我为此想到的结构。请让我知道这是否正确。

ExecuteNodes function()

For loop {}from 0 to vector size // vector - this is the data structure that will have all the input file details 
{
         For loop {}// this is for my ordering logic. For all nodes I calculate the number of      nodes     that can execute paralley . Also using this loop to set the nodes ready for execution
         For loop {
           if that node is ready for execution.
              run a loop for the number of concurrent processes for that node .
              pid = fork()
              if(pid == 0)
              execvp(); 
         }
}

for loop {all nodes}
{
    wait()
} 


这种结构正确吗?请让我知道您的建议/意见。

最佳答案

您建议的结构不允许顺序执行,因为在执行所有节点之前,您不会调用wait。您可以使用wait()的一种变体,该变体允许WNOHANG选项检查子项的终止而不会阻塞。

当您调用fork()时,您需要检查-1指示错误,以及检查0指示该调用已在子进程中返回。

由于我不确定您需要什么顺序约束,因此很难确切知道要建议的结构。