0

所以我想产生一些子进程等于从命令行输入的值。我有所有的价值观和一切都读得很好,我只需要弄清楚如何产生这些孩子,并让他们都调用同一个程序。

这是我到目前为止所拥有的:

for(int i = 0; i < processes; i++)
{
    pid = fork();
    printf("%d\n", pid);
}

if(pid < 0)
{
perror("fork");
exit(-1);

}

else if(pid == 0)
{

    /*for(int j = 0; j <= 5; j++)
    {
        execl("~/cs370/PA2/gambler.c","run", NULL);
        Gamble(percent);
    }*/

}

所以要再次明确。我想产生"processes"大量的孩子,所有这些都叫"gambler.c". 但一次只能运行 5 个。它应该wait(),然后一次处理其余的 5 个孩子。

样本输入:

run -p 60 10

其中 -p 是要馈送到 gambler.c 的百分比,它仅根据随机数生成器返回成功或失败。 60是百分比。 10是进程数。

非常感谢任何帮助,谢谢!

4

1 回答 1

1

你调查过exec家庭吗? Exec将产生进程。然后,您可以使用它wait来监视进程。 fork将为您提供 PID,然后您可以在每个 pid 调用上进行第二个线程循环wait并跟踪每个活动进程。

等待手册页

执行手册页

pid_t pid = fork()
if (pID == 0)
{
     //child
     //immediatly call whichever exec you need.  Do not do anything else.
     //do not log a message or print a string.  Any calls to c++ standard strings
     //will risk deadlocking you.
}
else if (pid < 0)
{
   //error
} 
else
{
   //parent.  store pid for monitoring
}
于 2013-09-27T18:24:02.230 回答