![p 和 e 在 exec 调用系列中表示什么?](https://linux22.com/image/69643/p%20%E5%92%8C%20e%20%E5%9C%A8%20exec%20%E8%B0%83%E7%94%A8%E7%B3%BB%E5%88%97%E4%B8%AD%E8%A1%A8%E7%A4%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
l
在v
exec 调用中表示参数是通过 list 还是 提供array(vector)
。我在某处读到它p
表示用户的路径并e
表示环境,但不明白这意味着什么?
答案1
查看Exec 函数的维基百科链接和此链接有关使用 exec() 调用启动进程
e – 指向环境变量的指针数组显式传递给新的进程映像。
“e”后缀版本将环境传递给程序。环境就是程序运行的一种“上下文”。例如,您可能有一个带有单词词典的拼写检查器。您可以在环境中提供它,而不是每次在命令行上指定字典的位置:
l – 命令行参数单独(列表)传递给函数。
例如,如果我想使用参数 -t、-r 和 -l 调用 ls 命令(意思是“按时间按相反顺序对输出进行排序,并显示输出的长版本”),我可以将其指定为任一。
p – 使用 PATH 环境变量查找要执行的路径参数中指定的文件。
“p”后缀版本将搜索 PATH 环境变量中的目录以查找可执行文件。您可能已经注意到,所有示例都有可执行文件的硬编码位置:/bin/ls 和 /usr/bin/spellcheck。其他可执行文件呢?除非您想首先找出该特定程序的确切路径,否则最好让用户告诉您的程序搜索可执行文件的所有位置。标准 PATH 环境变量就是这样做的。
v – 命令行参数作为指针数组(向量)传递给函数。
参数列表是通过指向参数向量的指针指定的。
正如另一个答案中提到的,有关 Unix 系统调用的此链接对于进一步阅读也同样很棒。
答案2
根据http://www.di.uevora.pt/~lmr/syscalls.html,后缀表示参数的类型:
l argn is specified as a list of arguments.
v argv is specified as a vector (array of character pointers).
e environment is specified as an array of character pointers.
p user's PATH is searched for command, and command can be a shell program