p 和 e 在 exec 调用系列中表示什么?

p 和 e 在 exec 调用系列中表示什么?

lvexec 调用中表示参数是通过 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

相关内容