在程序中使用fork()和execl()来执行其他C程序作为进程

时间:2013-10-12 17:55:37

标签: c fork

我是使用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近似程序作为不同的进程执行。

希望我足够清楚并且谢谢。

0 个答案:

没有答案