Итак, я пишу программу, в которой аргументы следующие:
program start emacs file.c
или даже
program wait
По сути, первый аргумент (argv[0]) — это имя программы, за которым следуют пользовательские данные.
Внутри моего кода я вызываю execvp. Дело в том, что я не совсем уверен, что привожу правильные аргументы.
if (pid == 0) {
execvp(argv[1], argv); //Line of interest
exit(1);
}
являются ли argv[1] и argv правильными аргументами для описанной выше функциональности? Я просмотрел справочную страницу, и они имеют смысл, но могут быть неправильными для этого случая. Благодарю вас!
execvp(cmds[n], &cmds[n]);
или эквивалент. То есть вы передаете n-й элемент массива аргументов в качестве первого аргумента функцииexecvp()
и передаете адрес n-го элемента массива аргументов в качестве второго аргумента — в вашем конкретном случаеexecvp(argv[1], &argv[1]);
. Понятно, что технически вы не обязаны это делать (аргументы независимы), но вам нужна очень веская причина, чтобы поступить иначе. - person Jonathan Leffler   schedule 20.02.2014