在main函数中执行: pid_t = fork(); 既然是在main函数内部执行fork,那么应该说是由main进程创建了子进程还是操作系统创建了子进程 ? 这个fork创建的所谓子进程,其父进程是main进程还是操作系统的某个进程 ?
调用main函数的进程是什么进程 ? 调用main函数的进程也就是fork进程的父进程吧 ?
你好! 我只是想知道: 因为进程是一个动态概念,在main函数被调用的时候,肯定已经有了进程存在,那么这个进程是什么 ? 所谓的main进程的说法是否准确? 从Unix操作系统来说,应该是某个内核进程吧 ?
追答以Linux来说,你执行的main一定属于一个程序,main是这个程序的入口点,这是背景
假设程序就是a.out
你在shell里面输入./a.out开始执行这个程序
实际上的过程是,shell先fork一个子进程,然后使用exec函数将a.out的代码覆盖到子进程的进程空间里,然后子进程从a.out的main开始执行
而Linux的一切系统进程都是由1号Init进程fork来的,所以说Init是所有进程的祖先进程
当然这么说也不够确切,不过对于你的问题来说足够了
谢谢! 太底层的东西先不追究了!
“shell先fork出来的子进程从a.out的main函数处开始执行, 这个“shell先fork出来的子进程”也是main函数内部fork进程的父进程了 ?
你可以暂时先这么理解,shell的实现比较复杂
是main函数调用fork函数的
追答每个进程都可以调用main函数……
追问fork出来的子进程也能调用main函数 ?