fork exec等待循环为命令行输入的值

时间:2017-01-14 18:30:54

标签: c linux fork exec wait

我尝试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的正确示例,因此我被困了好几个小时,尝试上下移动函数而什么也得不到。 无论我做什么,我都看不到内部文件的第二次执行。

1 个答案:

答案 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;
           }
}