C - execvp()第二个参数

时间:2012-06-13 15:25:48

标签: c unix execvp

execvp(argv[1], &argv[1])

execvp()的第二个参数到底做了什么?

2 个答案:

答案 0 :(得分:5)

第二个参数应该是一个指向NULL - 终止的字符串数组的指针,它将成为被调用进程的argv

此数组的第一个元素成为被调用者的argv[0],它不一定与其路径相同;例如,您可以按其完整路径调用进​​程,但将其基本名称传递给argv[0]。此外,某些程序根据argv[0]的行为有所不同。着名的例子是当他们的argv[0]-开头时,Unix shell表现为“登录shell”,因此原始login程序可以做

char *argv[2] = {"-sh", NULL};
execvp("/bin/sh", argv);

答案 1 :(得分:0)

它被传递给被调用的程序,因为它是argv向量。我quote the documentation

  

execv(),execvp()和execvpe()函数提供了一个指向以null结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应指向与正在执行的文件关联的文件名。