我已经阅读过,系统函数内部使用execl、fork和wait函数。因此,我试图模拟不使用system函数的工作方式。但是我无法实现相同的工作。
当我们使用system函数调用程序时,在system()函数调用之后,下面的代码也会执行。因此,为了模拟system函数,我编写了以下代码:
int main()
{
printf("In controller Start: %d\n\n",getpid());
system("./prog1");
printf("Forking New Process %d\n\n",fork());
printf("Process Id: %d\n\n",getpid());
execl("./infinite",0);
printf("In controller End\n\n");
return 0;
}
在上面的代码中,运行“infinite”程序后,最后一行不会被打印出来。
即
printf("In controller End\n\n");
为了打印出最后一行并执行“无限”程序,而又不使用system函数,应该怎么做?如果有人能够逐步解释系统函数的工作原理,例如哪个函数首先被系统调用等,则会非常好。
为什么执行不会继续到最后一行,就像我们进行简单的函数调用(除execl之外)那样。
注:infinite是使用C代码创建的二进制文件。