execvp(argv[1], &argv[1])
Что именно делается со вторым аргументом execvp()?C - execvp() второй аргумент
execvp(argv[1], &argv[1])
Что именно делается со вторым аргументом execvp()?C - execvp() второй аргумент
Второй аргумент должен быть указателем на NULL
-термированный массив строк, который становится argv
вызываемого процесса.
Первый элемент этого массива становится argv[0]
вызываемого абонента, который не обязательно совпадает с его контуром; например, вы можете вызывать процесс по его полному пути, но передайте ему его базовое имя как argv[0]
. Кроме того, некоторые программы ведут себя по-разному на основе их argv[0]
. Известный пример, что Unix оболочки ведут себя как «оболочки входа в системе», когда их argv[0]
начинается с -
, так примитивно login
программы могла бы сделать
char *argv[2] = {"-sh", NULL};
execvp("/bin/sh", argv);
Он передается вызываемой программе, как это argv
вектора. Я quote the documentation:
execv(), execvp(), и execvpe() функции обеспечивают массив указателей на нуль-терминатором строки, которые представляют собой список параметров, доступных для новой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанное с исполняемым файлом.