을 execvp는하기 위해 사용자의 입력 배열을 전달 할 수 없습니다 :이 내 입력 기능입니다
int i,j,n,len,c;
char *buffer = 0;
size_t bufsize = 0;
ssize_t characters;
characters = getline(&buffer, &bufsize, stdin);
len = strlen(buffer);
buffer[len-1]='\0';
if (characters > 0)
{
char *end_str1;
char *token1 = strtok_r(buffer, ";", &end_str1);
int count = 0, wordcnt;
while (token1 != NULL)
{
char cmd[10][101];
memset(cmd,0,sizeof(cmd));
wordcnt = 0;
char *end_str2;
count++;
char *token2 = strtok_r(token1, " ", &end_str2);
while (token2 != NULL)
{
n = strlen(token2);
strncpy(cmd[wordcnt],token2,n);
wordcnt++;
token2 = strtok_r(NULL, " ", &end_str2);
}
cmd[wordcnt+1][0]='\0';
execvp(cmd[0],cmd);
token1 = strtok_r(NULL, ";", &end_str1);
}
}
free(buffer);
유일한 경고 호환되지 않는 포인터 타입이지만, 내 cmd를 어레이는 ** PTR, 그래서 무엇을 이해하지 못하는 잘못된 것입니다.
나는 이것을 ** k와 동일시하고, 그것을 execvp에 전달하려고 시도했다. 일하지 않았어. 나는 cmd를 ** cmd로 바꾸려고 시도했다. 나는 그곳에서 뭔가 잘못했다고 생각했다.
무엇을 버퍼로 전달합니까? – Cyclotron3x3
내가 프로그램에 입력하는 명령은'cd ..; pwd '는 버퍼에 저장됩니다. –