我是使用fork()和exec()的新手,我试图从名为Fork.c的C文件中运行三个不同的进程,以便我可以在其他三个.c文件中执行代码。这些c文件中的每一个都将使用不同的方法来近似pi的值,但这根本不重要。
我的主要问题是基本上不知道execl()在C文件方面是如何工作的,我还没有发现任何可以在堆栈溢出或互联网上澄清我的怀疑的东西。所以,我想让每个孩子使用这三个不同文件中的代码以不同的方式计算pi。
到目前为止,我在fork.c中的内容如下:
for(i = 0; i < CHILDREN_N; i++)
{
pid = getpid();
pid = fork();
if (pid == 0) /* child process is always 0 */
{
//do something
printf("I am the child %d and my pid is %d \n", i, getpid());
execl();
exit(0);
}
else if (pid == -1) /*error*/
{
printf("Error ocurred.");
return 0;
}
else /* parent process is non-zero (child's pid) */
{
fprintf(stdout, "child pid = %d\n", pid);
fprintf(stdout, "waiting for child\n");
wait(NULL);
fprintf(stdout, "child terminated\n");
}
fprintf(stdout, "parent exiting\n");
}
所以,我不知道如何让execl()将不同的pi近似程序作为不同的进程执行。
希望我足够清楚并且谢谢。