我是使用 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 近似程序作为不同的进程执行。
希望我足够清楚,谢谢。