C - execvp()第二个参数

Jor*_*dan 1 c unix execvp

execvp(argv[1], &argv[1])
Run Code Online (Sandbox Code Playgroud)

究竟是用execvp()的第二个参数做的?

Fre*_*Foo 5

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

该数组的第一个元素成为argv[0]被调用者,它不一定与其路径相同; 例如,您可以通过其完整路径调用进​​程,但将其基本名称作为传递给它argv[0].此外,一些程序根据其行为表现不同argv[0].着名的例子是Unix shell在argv[0]启动时表现为"登录shell" -,因此原始login程序可以做到

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