У меня есть вопрос, который заключается в следующем. Может кто-нибудь, пожалуйста, объясните мне?
Рассмотрим переменные среды, используемые в операционных системах на основе Unix. Часто встречающаяся переменная среды называется PATH
и используется интерпретаторами команд или оболочками для определения имен каталогов, в которых выполняется поиск для поиска исполняемых программ. Например, типичное значение PATH
может быть /Users/chris/bin:/usr/local/bin:/usr/bin:/bin:.
, что обеспечивает разделенный двоеточиями список каталогов для поиска требуемой программы.
Напишите функцию C99 с именем executeUsingPATH()
, которая принимает имя программы для выполнения и вектор аргументов, заканчивающийся на NULL
в конце этой программы. Запрашиваемая программа может быть указана с использованием только ее имени или с использованием абсолютного или относительного пути.
int executeUsingPATH(char *programName, char *arguments[]);
Функция executeUsingPATH()
должна пытаться выполнить programName
с каждого
каталог, предоставляемый через PATH, по порядку. Если programNam
e найден и может быть выполнен (передавая ему указанные программные аргументы), функция должна дождаться завершения своего выполнения и затем вернуть состояние завершения завершенного процесса. Если функция не может найти и выполнить programName
, то она должна просто вернуть целое число -1.
Ваша функция не должна просто вызывать аналогичную библиотечную функцию с именем execvp()
.
Понятия не имею, как это реализовать.