Выполнить раскрытие строки в стиле командной оболочки shell
#include <wordexp.h>int wordexp( const char *words,wordexp_t *pwordexp,int flags );
NULL
, сколько указано в wordexp_t::we_offs. /dev/null
. libc
Фукнция позволяет произвести обработку строки с раскрытием специфических для командной оболочки конструкций, таких, например, как переменные окружения, знак "~"
и подстановка команд.
При использовании параметра pwordexp следует помнить, что пользователь должен выделить память для переменной типа wordexp_t самостоятельно. Функция wordexp() выделит требуемый объем памяти для полей структуры по мере необходимости. Для освобождения этой памяти должна использоваться функция wordfree().
Не передавайте ненадежные пользовательские данные в wordexp(), независимо от установки флага WRDE_NOCMD . Функция пытается обнаружить ввод, что может привести к выполнению команд перед передачей их в оболочку, но она не использует тот же парсер, поэтому её можно обмануть. |
Сообщения об ошибках выводятся в стандартный файл ошибок только если установлен флаг WRDE_SHOWERR
.
"|"
, "&"
, ";"
, "<"
, ">"
, "("
, ")"
, "{"
, "}"
.WRDE_UNDEF
.WRDE_NOCMD
.wordexp_t we;wordexp( "${EDITOR:-vi} *.c /etc/motd", &we, 0 );execvp( we->we_wordv[0], we->we_wordv );
"\t\n"
. POSIX 1003.1 (IEEE Std 1003.1-2001)
ЗОСРВ
«Нейтрино»
редакции 2020
wordexp_t, glob(), globfree(), wordfree()
Предыдущий раздел: Описание API системной библиотеки