Я использую execvp
для выполнения нового процесса для команды grep -l night *
.Вот мой код:
char * argument[5];
char keyword[] = "night";
argument[0] = (char *) malloc (sizeof(char)*25);
argument[1] = (char *) malloc (sizeof(char)*25);
argument[2] = (char *) malloc (sizeof(char)*25);
argument[3] = (char *) malloc (sizeof(char)*25);
argument[4] = (char *) malloc (sizeof(char)*25);
argument[0] = "grep";
argument[1] = "-l";
strcpy(argument[2],keyword);
argument[3] = "*";
argument[4] = NULL;
execvp ("grep", argument);
Но я получаю вывод этой программы как «grep: *: Нет такого файла или каталога», что неверно, поскольку выполнение той же команды из оболочки приводит к появлению спискафайлов, которые содержат текст "ночь".Я подозреваю, что *
в списке команд отправляется в виде строки с кавычками на exec
.Правильно ли мое предположение?Если так, как я могу исправить эту проблему?Любая помощь будет принята с благодарностью.