Выполнить раскрытие строки в стиле командной оболочки 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 системной библиотеки