C语言中execlp系统调用的参数含义及用法相关疑问
execlp调用语句说明
你的推测是正确的,这行execlp("ls","ls","-l", NULL);执行成功的效果,完全等价于在Ubuntu shell中执行ls -l命令。各个参数的作用如下:
- 第一个参数
"ls":指定要执行的程序名,execlp会自动遍历系统PATH环境变量对应的所有目录,找到匹配的ls可执行文件加载运行。 - 第二个参数
"ls":传递给目标程序的第0个参数(对应C程序main函数的argv[0]),也就是程序自身的名称。这是exec族函数的语法要求,虽然大部分程序运行时不会强依赖这个值,但必须按规则传入。 - 第三个参数
"-l":传递给ls程序的第一个运行参数,和你手动执行ls -l时跟的-l选项完全一致,作用是要求ls以长列表格式输出目录的详细信息(包含权限、所有者、大小、修改时间等字段)。 - 最后的
NULL:参数列表结束标记。execlp是可变参数函数,必须用NULL作为最后一个参数,告知系统参数已经全部传递完毕,没有这个标记系统会读取后续内存的垃圾值作为参数,导致运行异常。
补充注意:execlp调用成功后,当前进程的所有原有代码都会被替换为ls程序的代码,后续的代码不会再执行;只有调用失败时才会返回错误值,继续执行原进程的后续逻辑。
内容的提问来源于stack exchange,提问作者Miguel Garcia
相关产品推荐
相关产品推荐

