我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:*:没有这样的文件或目录”,这是不正确的,因为从 shell 执行相同的命令会导致包含文本“night”的文件列表。我确实怀疑*
命令列表中的 是作为带引号的字符串发送到exec
. 我的假设正确吗?如果是这样,我该如何解决这个问题?任何帮助将不胜感激。