Back to Blog

exec函数簇理解

关键点解释

  1. fork() 创建子进程后,子进程调用 execlp。因为 execlp 会在 PATH 环境变量中搜索 ls,所以不必写完整路径。
  2. 参数列表以 可变参数 形式提供,必须以 (char *)NULL 结束,以告诉 execlp 参数已完结。
  3. execlp 成功,子进程的代码段立即被 ls 程序取代,后续的 perrorexit 不会执行。
  4. 若搜索失败或权限不足,execlp 返回 -1errno 被设置,perror 打印错误信息。

4. 其它函数的差异细节

4.1 execl vs execlp

  • 路径处理execl 需要提供 完整路径(如 /bin/ls),而 execlp 只需要文件名,系统会依据 PATH 环境变量进行搜索。
  • 使用场景:当你确信可执行文件所在路径固定且不想依赖 PATH 时,使用 execl;若希望保持灵活性或遵循系统默认搜索规则,使用 execlp

4.2 execle

  • 环境定制execle 允许调用者显式提供一个环境向量 envp,从而在新程序中覆盖或添加环境变量。例如: