#c
#c
Вопрос:
Я хочу передать argv в execvp, но начиная с определенного индекса i, отличного от 0. Как мне это сделать? Я думал скопировать аргументы, начинающиеся с i, в другой массив и использовать этот массив, но количество аргументов не является фиксированным и не похоже, что это возможно без динамического распределения, в котором я новичок. Я думаю, что есть более простой способ просто указать argv на i, но я не могу понять это.
execvp(command, argv); //need argv to start at index 3
Ответ №1:
Поскольку argv — это массив, вы можете просто написать amp;argv[1]
, например, для передачи второго аргумента и далее.
Итак, для вашего случая: execvp(command, amp;argv[3]);
, просто убедитесь, что argc больше 3.
Комментарии:
1. Я думаю, что этот подход может быть немного хрупким. Причина в том, что
execvp()
будет ожидать полученияargv
массива, для которогоargv[0]
является именем программы. Это может иметь место в вашем примере, но я не уверен, что это можно гарантировать.argv
Динамическое выделение нового не сложно, и в нем используются методы, которые трудно освоить, не зная C.