在 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);
}
我想将 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);
}