2012-06-13 3 views

ответ

5

Второй аргумент должен быть указателем на NULL -термированный массив строк, который становится argv вызываемого процесса.

Первый элемент этого массива становится argv[0] вызываемого абонента, который не обязательно совпадает с его контуром; например, вы можете вызывать процесс по его полному пути, но передайте ему его базовое имя как argv[0]. Кроме того, некоторые программы ведут себя по-разному на основе их argv[0]. Известный пример, что Unix оболочки ведут себя как «оболочки входа в системе», когда их argv[0] начинается с -, так примитивно login программы могла бы сделать

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

Он передается вызываемой программе, как это argv вектора. Я quote the documentation:

execv(), execvp(), и execvpe() функции обеспечивают массив указателей на нуль-терминатором строки, которые представляют собой список параметров, доступных для новой программы. Первый аргумент, по соглашению, должен указывать на имя файла, связанное с исполняемым файлом.

Смежные вопросы