我想用 exec()
与用户发送的单词,目前我试了一下,结果是 "无效参数 "错误,我的想法是否可行,如果可以,如何操作?
目前的代码。
char word[30];
recv(new_sock, &word, sizeof(word), 0);
char command[1024];
sprintf(command,"%s %s","grep -w -i",word);
char *exp[] = {command, NULL};
execvp(exp[0], exp);
看起来你有2个问题。第一个问题。recv
并不对字符串进行null结尾。所以除非null是由发送者发送的,否则你需要添加它。第二, execvp
是不正确的。
int bytes_rcvd;
char word[30];
if ((bytes_rcvd = recv(new_sock, &word, sizeof(word), 0)) > 0 && bytes_rcvd < sizeof(word)) {
word[bytes_rcvd] = '\0';
const char *exp[] = {"grep", "-w", "-i", word, NULL};
execvp(exp[0], exp);
}