我正在尝试使用 char[][] 类型(又名字符串数组)中的数据运行 execvp。现在我知道 execvp()
将指向字符串的指针作为其第一个参数,然后将指向字符串数组的指针作为其第二个参数-实际上我之前什至已经成功使用过它-但是我似乎无法获得正确的指针组合&字符串让它在下面解决 - 我尝试的任何东西都被认为是不兼容的!
非常感谢任何帮助:) - 我已经删除了我的标题以压缩代码!
struct userinput {
char anyargs[30][30]; //The tokenised command
};
int main() {
struct userinput input = { { { 0 } } }; //I believe is valid to set input to 0's
struct userinput *inPtr = &input; //Pointer to input (direct access will be unavailable)
strcpy(inPtr->anyargs[0], "ls"); //Hard code anyargs to arbitary values
strcpy(inPtr->anyargs[1], "-lh");
char (*arrPointer)[30]; //Pointer to an array of char *
arrPointer = &(inPtr->anyargs[0]);
printf("arrPointer[0]: %s, arrPointer[1]: %s\n", arrPointer[0],
arrPointer[1]);
printf("At exec case; ");
execvp( arrPointer[0], arrPointer);
perror("Command not recognised"); //Prints string then error message from errno
return 0;
}