/ / cómo almacenar el resultado de execvp en una matriz de caracteres como una cadena - c, linux, shell, exec, execvp

cómo almacenar el resultado de execvp en una matriz char como una cadena - c, linux, shell, exec, execvp

Si un usuario escribe "ls", execvp muestra el resultado de "ls" en la pantalla. Me gustaría almacenar esto en una matriz de caracteres como una cadena. ¿Alguien puede ayudarme? Gracias por adelantado.

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);
}
}

Respuestas

2 para la respuesta № 1

popen() es más apropiado para su propósito que execvp() ya que desea leer el resultado del comando ejecutado "(consulte el manual vinculado para ver un ejemplo).

   #include <stdio.h>

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

int pclose(FILE *stream);

popen() devoluciones FILE * utilizando el cual puede leer la salida devuelta por el comando.