execvp(argv[1], &argv[1])
execvp()的第二个参数到底做了什么?
答案 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结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应指向与正在执行的文件关联的文件名。