C++ 使用fork、execvp执行UNIX命令
我试图创建一个程序,该程序接收包含UNIX命令列表的输入文件,并按特定顺序执行这些命令。 我正在学习C++ 使用fork、execvp执行UNIX命令,c++,C++,我试图创建一个程序,该程序接收包含UNIX命令列表的输入文件,并按特定顺序执行这些命令。 我正在学习fork(),wait(),execvp()系统调用,并对等待和分叉模式提出了一些问题。 这是我用来执行进程的结构。进程可以并行或顺序执行。我将在订货时决定这一点。 假设我必须按照A,B,C,D,E的顺序执行进程 这是我为这个提出的结构。请让我知道这是否正确 ExecuteNodes function() For loop {}from 0 to vector size // vector -
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()的一个变体,它允许WNOHANG选项在不阻塞的情况下检查子项的终止
...
if( pid == 0 )
execvp();
else if ( pid == -1 )
// handle errors
...
调用fork()时,需要检查-1(表示错误),以及检查0(表示调用已在子进程中返回)
很难确切地知道该建议什么结构,因为我不确定您需要什么顺序约束