在 exec 函数中使用来自用户的字符串

Using strings from user in exec function

我想将 exec() 与用户发送的单词一起使用,目前我尝试并导致 "invalid argument" 错误,我的想法是否可行,如果可行,如何实现?

当前代码:

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] = '[=10=]';
    const char *exp[] = {"grep", "-w", "-i", word, NULL};
    execvp(exp[0], exp);
}