从main主要调用main会产生一个新进程吗?

时间:2015-09-09 17:29:46

标签: c main

从main调用main会为被调用的main生成一个新进程,还是在同一进程中调用main?

我已经读过main返回的值由执行它的进程返回。

2 个答案:

答案 0 :(得分:1)

它不会创建另一个进程,但它将做的是将main()嵌入其自身。会发生一些奇怪的事情。如果您没有明确告诉主您已完全完成它将继续运行并且该过程不会终止;因为对main的原始调用尚未完成。当你调用它时它会嵌套在自身内。

好问题。当我第一次学习C时,我有这个弹出窗口。我最后使用main来重新运行所有内容而不是仅使用循环。我的老师说这不是一个好习惯。

答案 1 :(得分:-2)

在同一个进程中调用main函数,可以通过打印getpid()返回的值来检查它,如下所示:

int main(){
   static int i = 2;
   if (i>0){
      int pid1 = getpid();
      printf("Main: %d\n", pid1);
      i--;
      main();
   }

}

输出

Main: 32323
Main: 32323

确认main在与系统调用第一个进程相同的进程中被调用。