/ / jak przechowywać wynik execvp w tablicy char jako ciąg znaków - c, linux, shell, exec, execvp

jak przechowywać wynik execvp w tablicy char jako ciąg - c, linux, shell, exec, execvp

Jeśli użytkownik wpisze „ls” execvp wyświetli na ekranie wynik „ls”. Chciałbym przechowywać to w tablicy znaków jako ciąg. Czy ktoś może mi pomóc? Z góry dziękuję.

int main () {
char response[1000];
char *buffer[100];
int pid, status;
printf("Please enter the shell command:  ");
scanf("%s",&response);
pid = fork();
if (pid < 0) {
printf("Unable to create child process, exiting.n");
exit(0);
}
if (pid == 0) {
printf("I"m the child.n");
*buffer = response;
execvp(*buffer,buffer);
printf("execvp failedn");
}

else{
wait(&status);
exit(0);
}
}

Odpowiedzi:

2 dla odpowiedzi № 1

popen() jest bardziej odpowiedni dla twojego celu niż execvp() ponieważ chcesz odczytać dane wyjściowe z komendy exec (ed (patrz przykład w połączonej instrukcji).

   #include <stdio.h>

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);

popen() zwraca FILE * za pomocą którego można odczytać dane wyjściowe zwrócone przez polecenie.