Не знаете, как анализировать аргументы и использовать функцию excevp - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь написать программу под названием Generate , которая в основном создает дочерний процесс для выполнения определенного процесса и выводит некоторую статистику относительно выполнения процесса

Предположим, мой вводна терминале есть ./Generate ./a 123 234,

  • Я знаю, что могу собрать ввод с помощью main(int args, char **argv).
  • Я знаю argv[0] = ./Generate, argv[1], =./a, argv[2] = 123, argc[3] = 1234.
  • Я создаю дочерний процесс и хочу, чтобы он использовал функцию execvp() для выполнения ./a 123 234.

Как бы я поступил так же Пример:

if (pid == 0){
    execvp(a[0],a); // I want 'a' here to contain my input

1 Ответ

0 голосов
/ 18 октября 2018

Предполагая, что все параметры, передаваемые в вашу программу, являются командной строкой вызываемой программы, вы можете сделать следующее:

execvp(argv[1], &argv[1]);

Поскольку argv является массивом указателей, &argv[1] даетВы указатель на второй элемент в этом массиве, так что остальные элементы будут следовать.

...