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

问题描述 投票:0回答:1

我想用 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);
c exec
1个回答
1
投票

看起来你有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);
}
© www.soinside.com 2019 - 2024. All rights reserved.