Linux中C程序的执行 - Xinrea/Learn GitHub Wiki

主要流程

  1. shell下./run
  2. shell新建进程P
  3. P中执行execve(),传入run的全路径
  4. execve()触发系统调用sys_execve(),根据文件修改当前进程执行环境
  5. 系统调用结束,返回P,P开始运行(此时已经在运行run中的代码)

sys_execve()中,设置了新的shell环境,几乎释放了原进程所有的资源(除了还没有自动关闭的文件描述符外),但PID保持不变。