我尝试exec
另一个文件中的文件最多5次并保存结果。我在for循环中使用fork-exec-wait,这就是它的样子:
for(i = 0; i< Number_of_Processes; i++){
pid = fork();
if(pid == 0)
{
execl(...);
exit(EXIT_Failure);
}
else if(pid > 0)
{
wait(&status);
result = WEXITSTATUS;
}
}
问题是,它首次正确执行第二个文件然后重新打印第一个结果5次(或者用户输入的任何内容)
我尝试了很多其他方式,例如在它pid == 0
时休息,但它没有用。我无法找到一个如何在循环中使用exec
的正确示例,因此我被困了好几个小时,尝试上下移动函数而什么也得不到。
无论我做什么,我都看不到内部文件的第二次执行。
答案 0 :(得分:0)
显然这是一个时间问题,当我在子进程中sleep(1)
之前添加execl
时,它修复了所有内容并逐个执行了所需的进程并打印了真实的结果
for(i = 0; i< Number_of_Processes; i++){
pid = fork();
if(pid == 0)
{
sleep(1);
execl(...);
exit(EXIT_Failure);
}
else if(pid > 0)
{
wait(&status);
result = WEXITSTATUS;
}
}