Функции execv ()
Функции execv(), execve() и execvp() передают аргументы командной строки в векторе указателей на строки с завершающим нулевым символом. Количество аргументов командной строки должно быть известно во время компиляции. Элемент argv[0] обычно представляет собой команду.
• int execv(const char *path,char *const arg[]);
Здесь path — путевое имя выполняемой программы. Его можно задать в виде полного составного имени либо относительного составного имени из текущего каталога. Последующий параметр представляет вектор (с завершающим нулевым символом), содержащий аргументы командной строки, представленные в виде строк с завершающими нулевыми символами. Всего может быть n аргументов. Этот вектор завершается NULL-указателем. Элементу arg[] можно присвоить значение таким образом:
char *const arg[] = {«traverse»,".», ">",«1000»,NULL};
Вот пример вызова этой функции:
execv(«traverse», arg) ;
В этом случае утилита traverse перечислит все файлы в текущем каталоге, размер которых превышает 1000 байт.
• int execve(const char *path,char *const arg[],char *const envp[]);
Эта функция аналогична функции execv(), с одним отличием: она имеет дополнительный параметр, envp[], который описан выше.
• int execvp(const char *file,char *const arg[]);
Здесь file — имя выполняемой программы. Последующий параметр представляет собой вектор (с завершающим нулевым символом), содержащий аргументы командной строки, представленные в виде строк с завершающими нулевыми символами. Всего может быть n аргументов. Этот вектор завершается NULL-указателем.
Вот примеры применения синтаксиса функций execv () с различными аргументами:
char *const arg[] = {«traverse»,".», ">",«1000»,NULL};
char *const envp[] = {«files=50»,NULL};
execv("/path/traverse», arg);
execve("/path/traverse», arg, envp);
execvp(«traverse», arg);
Здесь в каждом примере вызова execv-функции активизированный процесс выполняет программу traverse.
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ